cmake_minimum_required(VERSION 3.5)#用于构建CMake项目CMake最低版本 project(01friststudy VERSION 0.1 LANGUAGES CXX)#通过project命令配置项目信息,就是版本简述 set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_CXX_STANDARD 17)#Qt 6 需要支持 C++ 版本 17 或更高版本的编译器。RED set(CMAKE_CXX_STANDARD_REQUIRED ON)#通过设置,变量来强制实施此操作,如果编译器太旧,CMake 将打印错误。CMAKE_CXX_STANDARDCMAKE_CXX_STANDARD_REQUI find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools)#CMake查找Qt 6,并导入模块 find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools)#CMake查找包,并导入模块 set(TS_FILES 01friststudy_zh_CN.ts)#设置翻译文件 set(PROJECT_SOURCES#项目来源 main.cpp mywidget.cpp mywidget.h ${TS_FILES} ) if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)#qt版本主要 qt_add_executable(01friststudy#创建并完成特定于平台类型的应用程序目标。 MANUAL_FINALIZATION ${PROJECT_SOURCES} ) # Define target properties for Android with Qt 6 as: # set_property(TARGET 01friststudy APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR # ${CMAKE_CURRENT_SOURCE_DIR}/android) # For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation qt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) else() if(ANDROID) add_library(01friststudy SHARED#添加名为01friststudy的动态库,库的源文件可指定 ${PROJECT_SOURCES} ) # Define properties for Android with Qt 5 after find_package() calls as: # set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android") else() add_executable(01friststudy#告诉CMake 我们要构建一个作为目标的可执行文件(所以不是库)。目标应从C++源文件 构建。01friststudy.cpp ${PROJECT_SOURCES} ) endif() qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})#处理给定的源(目录或单个文件)以生成Qt Linguist文件。这些文件依次被编译为存储在构建目录中的具有相同基本名称的文件。生成的文件的路径被添加到..ts.ts.qm.qm<VAR> endif() target_link_libraries(01friststudy PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)#告诉CMake可执行文件通过引用上述调用导入的目标来使用Qt Core set_target_properties(01friststudy PROPERTIES#为一个目标设置属性。该命令的语法是列出所有你想要变更的文件,然后提供你想要设置的值。 MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com#你能够使用任何你想要的属性/值对,并且在随后的代码中调用GET_TARGET_PROPERTY命令取出属性的值。 MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} MACOSX_BUNDLE TRUE WIN32_EXECUTABLE TRUE ) install(TARGETS 01friststudy#将项目生成的库文件、头文件、可执行文件或相关文件等安装到指定位置(系统目录,或发行包目录) BUNDLE DESTINATION . LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) if(QT_VERSION_MAJOR EQUAL 6)#未来的版本中可能会更改。描述在创建目标之后,通常需要进一步的处理或终结步骤。执行的步骤取决于平台和目标的各种属性。这些步骤应该在与创建目标时相同的目录作用域中执行,因此这个命令也应该从相同的目录作用域中调用。该命令根据所提供的平台和目标实现以下功能:当目标是Android时,为目标生成一个部署设置文件。如果为Android构建,则创建一个生成APK的构建目标。该命令通常作为qt_add_executable调用的一部分调用。该命令的文档中讨论了调用发生的时间以及al项目可能需要显式调用它的时间。 qt_finalize_executable(01friststudy) endif()
标签:文件,set,CMAKE,qt,VERSION,构建,qt6CMake,01friststudy,Qt From: https://www.cnblogs.com/ouzhougou/p/17204495.html