79 lines
2.4 KiB
CMake
79 lines
2.4 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
|
|
project(qwfassoc LANGUAGES CXX)
|
|
|
|
# Qt 6 requires C++17 at minimum.
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
|
# Let CMake auto-process Q_OBJECT, .ui files and .qrc resources.
|
|
set(CMAKE_AUTOMOC ON)
|
|
set(CMAKE_AUTOUIC ON)
|
|
set(CMAKE_AUTORCC ON)
|
|
|
|
# Make the bundled Findwfassoc.cmake module visible to find_package().
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
|
|
|
# Locate third-party dependencies. The user is responsible for making these
|
|
# discoverable through the usual CMake mechanisms (CMAKE_PREFIX_PATH, etc.).
|
|
# LinguistTools is required to wire up Qt's translation pipeline
|
|
# (lupdate + lrelease) so that .ts files are kept up to date and .qm files
|
|
# are embedded as Qt resources.
|
|
find_package(Qt6 REQUIRED COMPONENTS Widgets LinguistTools)
|
|
find_package(toml11 REQUIRED)
|
|
# Findwfassoc.cmake requires the wfassoc_ROOT variable to be set.
|
|
find_package(wfassoc REQUIRED)
|
|
|
|
set(QWFASSOC_SOURCES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/main_window.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/manifest.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/icon_utils.cpp"
|
|
)
|
|
|
|
set(QWFASSOC_HEADERS
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/main_window.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/manifest.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/icon_utils.h"
|
|
)
|
|
|
|
set(QWFASSOC_UI
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/main_window.ui"
|
|
)
|
|
|
|
# WIN32 makes this a windowed application on Windows (no console window).
|
|
add_executable(qwfassoc WIN32
|
|
${QWFASSOC_SOURCES}
|
|
${QWFASSOC_HEADERS}
|
|
${QWFASSOC_UI}
|
|
)
|
|
|
|
target_include_directories(qwfassoc PRIVATE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src"
|
|
)
|
|
|
|
target_link_libraries(qwfassoc PRIVATE
|
|
Qt6::Widgets
|
|
toml11::toml11
|
|
wfassoc::wfassoc
|
|
)
|
|
|
|
# Translation pipeline.
|
|
#
|
|
# qt6_add_translations() runs lupdate against the target's sources (keeping
|
|
# the .ts files below in sync) and then runs lrelease to compile them into
|
|
# .qm files. The .qm files are embedded under the ":/i18n" resource prefix,
|
|
# where installTranslators() in main.cpp looks them up at runtime.
|
|
#
|
|
# The .ts files are intentionally shipped empty: translators are expected to
|
|
# fill them in. Re-running cmake / building the target refreshes the entries
|
|
# found by lupdate without dropping already-translated ones.
|
|
set(QWFASSOC_TS_FILES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/i18n/qwfassoc_zh_CN.ts"
|
|
)
|
|
|
|
qt6_add_translations(qwfassoc
|
|
TS_FILES ${QWFASSOC_TS_FILES}
|
|
)
|