Skip to content

Commit f7d758f

Browse files
committed
feat: Better CMake
1 parent bbe4518 commit f7d758f

5 files changed

Lines changed: 31 additions & 22 deletions

File tree

.github/workflows/windows.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
with:
3838
pkgs: libnick qtbase qtsvg qttools qlementine qlementine-icons
3939
triplet: x64-windows
40-
revision: 9c06ec4806a1fe6560860bbe87c06a2ad8e6ea8d
40+
revision: bae8fe64fb89f07325480436d27a472d59413b40
4141
token: ${{ github.token }}
4242
github-binarycache: true
4343
- name: "Build"

libapplication/CMakeLists.txt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
endif()
44

55
add_library(libapplication
6+
"include/controllers/mainwindowcontroller.h"
7+
"include/controllers/preferencesviewcontroller.h"
8+
"include/models/configuration.h"
9+
"include/models/startupinformation.h"
10+
"include/models/theme.h"
611
"src/controllers/mainwindowcontroller.cpp"
712
"src/controllers/preferencesviewcontroller.cpp"
813
"src/models/configuration.cpp"
@@ -18,12 +23,10 @@ endif()
1823
find_package(libnick CONFIG REQUIRED)
1924
target_link_libraries(libapplication PUBLIC libnick::libnick)
2025

21-
add_custom_target(shared_commands ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/__shared.h")
22-
add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/__shared.h" "${CMAKE_CURRENT_BINARY_DIR}/shared.h" COMMAND "${CMAKE_COMMAND}" -E touch "${CMAKE_CURRENT_BINARY_DIR}/shared.h")
2326
if(HAS_GETTEXT)
24-
add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${GETTEXT_XGETTEXT_EXECUTABLE}" --from-code=utf-8 --c++ --force-po --output="${POT_FILE}" --keyword=_ --keyword=_f --keyword=_n:1,2 --keyword=_fn:1,2 --keyword=_p:1c,2 --keyword=_pn:1c,2,3 --keyword=C_:1c,2 --width=80 ${TRANSLATE_FILES} WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
27+
add_custom_command(TARGET libapplication PRE_BUILD COMMAND "${GETTEXT_XGETTEXT_EXECUTABLE}" --from-code=utf-8 --c++ --force-po --output="${POT_FILE}" --keyword=_ --keyword=_f --keyword=_n:1,2 --keyword=_fn:1,2 --keyword=_p:1c,2 --keyword=_pn:1c,2,3 --keyword=C_:1c,2 --width=80 ${TRANSLATE_FILES} WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
2528
foreach(LINGUA IN ITEMS ${LINGUAS})
26-
add_custom_command(TARGET shared_commands PRE_BUILD COMMAND "${GETTEXT_MSGMERGE_EXECUTABLE}" --backup=off --update "${CMAKE_SOURCE_DIR}/resources/po/${LINGUA}.po" "${POT_FILE}")
29+
add_custom_command(TARGET libapplication PRE_BUILD COMMAND "${GETTEXT_MSGMERGE_EXECUTABLE}" --backup=off --update "${CMAKE_SOURCE_DIR}/resources/po/${LINGUA}.po" "${POT_FILE}")
2730
endforeach()
2831
else()
2932
message(WARNING "gettext not found, translations will not be generated")

org.nickvision.application.gnome/CMakeLists.txt

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,18 @@ if(NOT WIN32)
44
set(STARTUP_NOTIFY true)
55

66
add_executable(${OUTPUT_NAME}
7+
"blueprints/main_window.blp"
8+
"blueprints/preferences_dialog.blp"
9+
"blueprints/shortcuts_dialog.blp"
10+
"include/helpers/builder.h"
11+
"include/helpers/controlbase.h"
12+
"include/helpers/controlptr.h"
13+
"include/helpers/dialogbase.h"
14+
"include/helpers/dialogptr.h"
15+
"include/helpers/gtkhelpers.h"
16+
"include/views/mainwindow.h"
17+
"include/views/preferencesdialog.h"
18+
"include/application.h"
719
"src/helpers/builder.cpp"
820
"src/helpers/dialogbase.cpp"
921
"src/helpers/gtkhelpers.cpp"
@@ -18,27 +30,24 @@ if(NOT WIN32)
1830
pkg_check_modules(libxmlpp REQUIRED IMPORTED_TARGET libxml++-5.0)
1931
target_link_libraries(${OUTPUT_NAME} PRIVATE libapplication PkgConfig::gtk PkgConfig::adwaita PkgConfig::libxmlpp)
2032

21-
add_custom_target(gnome_commands ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/__gnome.h")
22-
add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/__gnome.h" "${CMAKE_CURRENT_BINARY_DIR}/gnome.h" COMMAND "${CMAKE_COMMAND}" -E touch "${CMAKE_CURRENT_BINARY_DIR}/gnome.h")
23-
2433
find_program(GLIB_COMPULE_RESOURCES_EXECUTABLE glib-compile-resources)
2534
if(GLIB_COMPULE_RESOURCES_EXECUTABLE)
26-
add_custom_command(TARGET gnome_commands PRE_BUILD COMMAND "${GLIB_COMPULE_RESOURCES_EXECUTABLE}" --sourcedir "${CMAKE_CURRENT_SOURCE_DIR}/resources" "${CMAKE_CURRENT_SOURCE_DIR}/resources/${PROJECT_NAME}.gresource.xml" --target="${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.gresource")
35+
add_custom_command(TARGET ${OUTPUT_NAME} PRE_BUILD COMMAND "${GLIB_COMPULE_RESOURCES_EXECUTABLE}" --sourcedir "${CMAKE_CURRENT_SOURCE_DIR}/resources" "${CMAKE_CURRENT_SOURCE_DIR}/resources/${PROJECT_NAME}.gresource.xml" --target="${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.gresource")
2736
else()
2837
message(WARNING "glib-compile-resources not found, resources will not be compiled")
2938
endif()
3039

3140
find_program(BLUEPRINT_COMPILER_EXECUTABLE blueprint-compiler)
3241
if(BLUEPRINT_COMPILER_EXECUTABLE)
33-
add_custom_command(TARGET gnome_commands PRE_BUILD COMMAND "${BLUEPRINT_COMPILER_EXECUTABLE}" batch-compile "${CMAKE_CURRENT_BINARY_DIR}/ui" "${CMAKE_CURRENT_SOURCE_DIR}/blueprints" "${CMAKE_CURRENT_SOURCE_DIR}/blueprints/*.blp")
42+
add_custom_command(TARGET ${OUTPUT_NAME} PRE_BUILD COMMAND "${BLUEPRINT_COMPILER_EXECUTABLE}" batch-compile "${CMAKE_CURRENT_BINARY_DIR}/ui" "${CMAKE_CURRENT_SOURCE_DIR}/blueprints" "${CMAKE_CURRENT_SOURCE_DIR}/blueprints/*.blp")
3443
else()
3544
message(FATAL_ERROR "blueprint-compiler not found, UI will not be compiled")
3645
endif()
3746

3847
if(HAS_GETTEXT)
3948
foreach(LINGUA IN ITEMS ${LINGUAS})
40-
add_custom_command(TARGET gnome_commands PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/${LINGUA}/LC_MESSAGES")
41-
add_custom_command(TARGET gnome_commands PRE_BUILD COMMAND "${GETTEXT_MSGFMT_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/resources/po/${LINGUA}.po" --output-file="${CMAKE_CURRENT_BINARY_DIR}/${LINGUA}/LC_MESSAGES/${SHORT_NAME}.mo")
49+
add_custom_command(TARGET ${OUTPUT_NAME} PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/${LINGUA}/LC_MESSAGES")
50+
add_custom_command(TARGET ${OUTPUT_NAME} PRE_BUILD COMMAND "${GETTEXT_MSGFMT_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/resources/po/${LINGUA}.po" --output-file="${CMAKE_CURRENT_BINARY_DIR}/${LINGUA}/LC_MESSAGES/${SHORT_NAME}.mo")
4251
endforeach()
4352
endif()
4453

org.nickvision.application.qt/CMakeLists.txt

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,22 +35,19 @@ if(WIN32)
3535
set_target_properties(${OUTPUT_NAME} PROPERTIES WIN32_EXECUTABLE ON)
3636
endif()
3737

38-
add_custom_target(qt_commands ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/__qt.h")
39-
add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/__qt.h" "${CMAKE_CURRENT_BINARY_DIR}/qt.h" COMMAND "${CMAKE_COMMAND}" -E touch "${CMAKE_CURRENT_BINARY_DIR}/qt.h")
40-
4138
if(WIN32)
42-
add_custom_command(TARGET qt_commands POST_BUILD COMMAND Qt6::windeployqt ARGS $<TARGET_FILE:${OUTPUT_NAME}> --no-quick-import --no-translations --no-compiler-runtime)
43-
add_custom_command(TARGET qt_commands POST_BUILD COMMAND "mt.exe" -manifest "${CMAKE_SOURCE_DIR}/resources/windows/${PROJECT_NAME}.manifest" -inputresource:\"$<TARGET_FILE:${OUTPUT_NAME}>\"\;\#1 -outputresource:\"$<TARGET_FILE:${OUTPUT_NAME}>\"\;\#1)
39+
add_custom_command(TARGET ${OUTPUT_NAME} POST_BUILD COMMAND Qt6::windeployqt ARGS $<TARGET_FILE:${OUTPUT_NAME}> --no-quick-import --no-translations --no-compiler-runtime)
40+
add_custom_command(TARGET ${OUTPUT_NAME} POST_BUILD COMMAND "mt.exe" -manifest "${CMAKE_SOURCE_DIR}/resources/windows/${PROJECT_NAME}.manifest" -inputresource:\"$<TARGET_FILE:${OUTPUT_NAME}>\"\;\#1 -outputresource:\"$<TARGET_FILE:${OUTPUT_NAME}>\"\;\#1)
4441
endif()
4542
4643
if(HAS_GETTEXT)
4744
foreach(LINGUA IN ITEMS ${LINGUAS})
4845
if(MSVC)
49-
add_custom_command(TARGET qt_commands PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/${LINGUA}/LC_MESSAGES")
50-
add_custom_command(TARGET qt_commands PRE_BUILD COMMAND "${GETTEXT_MSGFMT_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/resources/po/${LINGUA}.po" --output-file="${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/${LINGUA}/LC_MESSAGES/${SHORT_NAME}.mo")
46+
add_custom_command(TARGET ${OUTPUT_NAME} PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/${LINGUA}/LC_MESSAGES")
47+
add_custom_command(TARGET ${OUTPUT_NAME} PRE_BUILD COMMAND "${GETTEXT_MSGFMT_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/resources/po/${LINGUA}.po" --output-file="${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/${LINGUA}/LC_MESSAGES/${SHORT_NAME}.mo")
5148
else()
52-
add_custom_command(TARGET qt_commands PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/${LINGUA}/LC_MESSAGES")
53-
add_custom_command(TARGET qt_commands PRE_BUILD COMMAND "${GETTEXT_MSGFMT_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/resources/po/${LINGUA}.po" --output-file="${CMAKE_CURRENT_BINARY_DIR}/${LINGUA}/LC_MESSAGES/${SHORT_NAME}.mo")
49+
add_custom_command(TARGET ${OUTPUT_NAME} PRE_BUILD COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/${LINGUA}/LC_MESSAGES")
50+
add_custom_command(TARGET ${OUTPUT_NAME} PRE_BUILD COMMAND "${GETTEXT_MSGFMT_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/resources/po/${LINGUA}.po" --output-file="${CMAKE_CURRENT_BINARY_DIR}/${LINGUA}/LC_MESSAGES/${SHORT_NAME}.mo")
5451
endif()
5552
endforeach()
5653
endif()

resources/po/application.pot

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ msgid ""
88
msgstr ""
99
"Project-Id-Version: PACKAGE VERSION\n"
1010
"Report-Msgid-Bugs-To: \n"
11-
"POT-Creation-Date: 2025-06-01 17:02-0400\n"
11+
"POT-Creation-Date: 2025-06-08 16:16-0400\n"
1212
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1313
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1414
"Language-Team: LANGUAGE <LL@li.org>\n"

0 commit comments

Comments
 (0)