CMakeList 编写示例
最佳答案 问答题库438位专家为你答疑解惑
cmake_minimum_required(VERSION 3.8) #指定cmake的最小版本
set(PROJECT_NAME Untitled_1) #初始化变量
project(${PROJECT_NAME} VERSION 1.0) #创建一个project
set(CMAKE_AUTOMOC ON) #初始化内置变量, 该变量为Qt工程专属变量
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
file(HEADERS ${PROJECT_SOURCE_DIR}/include/*.h) #初始化变量, 该变量的值为一个list, 使用*匹配指定目录下的所有以h为扩展名的文件
file(SRC_FILES ${CMAKE_SOURCE_DIR}/src/*.cpp
${PROJECT_SOURCE_DIR}/res/*.qrc) #初始化变量, 该变量使用了多个匹配来赋值,不同匹配使用空格或回车分隔
include_directories(${PROJECT_SOURCE_DIR}/include) #将指定目录加入系统头文件搜索目录中
link_directories(${CMAKE_SOURCE_DIR}/lib/${CMAKE_SYSTEM_NAME}/${CMAKE_BUILD_TYPE}) #将指定目录加入系统lib搜索目录中
if(WIN32) #判断系统是否是Windows
add_compile_definitions(_WIN32 _HAS_STD_BYTE=0) #添加预编译变量
add_compile_options(/wd4068 /we4146) #添加编译选项(编译器特定)
add_link_options(/MANIFEST:NO) #添加link选项(编译器特定)
else()
add_compile_definitions(_HAS_STD_BYTE=0)
endif()
set(CMAKE_CXX_STANDARD 20) #设置C++语言标准
set(CMAKE_CXX_STANDARD_REQUIRED ON) #强制启用C++语言标准
find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED) #添加第三方库(或它的子库)
add_executable(${PROJECT_NAME} WIN32 ${HEADERS} ${SRC_FILES}) #为当前project指定一个编译目标(exe target)
add_library(${PROJECT_NAME} SHARED) #为当前project指定一个编译目标(dll/so target)
set_target_properties(${PROJECT_NAME} PROPERTIES ENABLE_EXPORTS ON) #设置某个的target的属性
target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Gui Qt5::Widgets) #为某个target指定要link的lib
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${PROJECT_NAME}> ${CMAKE_BINARY_DIR} #为某个target设置一个后处理事件, $<TARGET_FILE:>代表编译输出的exe或dll或lib的绝对路径
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_LINKER_FILE:${PROJECT_NAME}> ${CMAKE_BINARY_DIR}/libs) ##为某个target设置第二个后处理事件, $<TARGET_LINKER_FILE:>代表编译输出的dll对应的lib的绝对路径(仅windows有效,因为linux的so文件没有对应的lib
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/docs) #解析cmake文件时执行一个命令,此处是一个cmake的默认命令,它代表windows的md或者linux的mkdir
99%的人还看了
相似问题
- MeterSphere | 接口测试请求体中,int类型的入参实现动态化变量
- 【Vue】Node.js的安装与环境变量的配置
- C#中抽象类、抽象方法和接口暨内联临时变量的精彩表达
- ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)
- OpenLayers实战,WebGL图层根据Feature要素的变量动态渲染多种颜色的三角形,适用于大量三角形渲染不同颜色
- 全网最全jmeter接口测试/接口自动化测试看这篇文章就够了:跨线程组传递jmeter变量及cookie的处理
- Go——二、变量和数据类型
- 华为云cce中环境变量的使用
- Kotlin学习——hello kotlin 函数function 变量 类 + 泛型 + 继承
- ⑩⑤【DB】详解MySQL存储过程:变量、游标、存储函数、循环,判断语句、参数传递..
猜你感兴趣
版权申明
本文"CMakeList 编写示例":http://eshow365.cn/6-21236-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: IK分词器如何修改支持跨版本ES
- 下一篇: 京东数据分析:2023年9月京东洗烘套装品牌销量排行榜!