完整的最小cmakelist.txt

完整的最小cmakelist.txt

cmake_minimum_required (VERSION 3.8)					# cmake版本最低要求
set(PROJECT_DIR "/home/hhl/code/cmake/test/src")		# 设置这个项目放在哪个目录
project ("test")										# 项目名称

include_directories (${PROJECT_DIR}/include)			# 附加头文件目录
link_directories(${PROJECT_DIR}/lib)					# 附加库路径
aux_source_directory(${PROJECT_DIR}/src SRC_LIST)		# 设置./src为源文件路径
add_executable (main ${SRC_LIST})						# 寻找源文件进行编译

target_link_libraries(main libadd.a)					# 编译时需要链接的库

在这里插入图片描述
一,

只是为项目使用头文件做准备
 include_directories (${PROJECT_DIR}/include)			# 设置头文件所在文件夹路径
 
我一会儿要使用这个文件夹
#include"xxx_.h"

这句话只是为链接静态库做准备
link_directories(${PROJECT_DIR}/lib)					# 设置静态库路径

在这里插入图片描述
二,

这里最为核心(core),实际起作用
target_link_libraries(main libadd.lib)					# 编译时需要链接的库

两句话等价于
target_link_libraries(main ${PROJECT_DIR}/lib/ libadd.lib)

最后把动态库libadd.dll扔到.exe所在文件夹

在这里插入图片描述

最后把动态库libadd.dll扔到.exe所在文件夹,一定要记得,ok!

以下3个都是非必须,甚至没什么卵用

qt5_wrap_ui(SOURCES_UI${MAIN_UI});
	Qt Designer创建的.ui文件转换为C++代码,
	set(MAIN_UI "main_window.ui")
	qt5_wrap_ui(SOURCES_UI ${MAIN_UI})
	add_executable(your_target_name ${SOURCES_UI} ...)
#设置自定义变量 cmake所在路径
${CMAKE_CURRENT_SOURCE_DIR}
set(yycn1 "${CMAKE_CURRENT_SOURCE_DIR}/gen/lib")
添加子工程add_subdirectory()
 CMake 在给定的子目录中查找并处理 CMakeLists.txt 文件
设置依赖add_dependencies()
	add_library(mylib STATIC mylib.cpp)
	add_executable(myapp main.cpp)
	target_link_libraries(myapp mylib)

# 添加依赖关系,确保 mylib 在 myapp 之前构建
add_dependencies(myapp mylib)
依赖关系也可以自动推断。例如,如果一个目标链接到另一个目标,CMake 通常会自动添加必要的依赖关系。但是,在某些情况下,你可能需要显式地添加依赖关系,以确保构建过程的正确顺序

在这里插入图片描述


在CMake里区分操作系统

if(CMAKE_SYSTEM_NAME MATCHES "Linux")  // 注意区分大写
  message(STATUS "Linux platorm!")
elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
if(CMAKE_CL_64)
  message(STATUS "Windows Win64 platform!")
  else()
    message(STATUS "Windows Win32 platform!")
  endif(CMAKE_CL_64)
elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
  message(STATUS "FreeBSD platform!")
else()
  message(STATUS "other platform!")
endif(CMAKE_SYSTEM_NAME MATCHES "Linux")

在CMake里打印信息
message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] "message to display" ...)

(无) = 重要消息
STATUS = 非重要消息
WARNING = CMake 警告, 会继续执行
AUTHOR_WARNING = CMake 警告 (dev), 会继续执行
SEND_ERROR = CMake 错误, 继续执行,但是会跳过生成的步骤
FATAL_ERROR = CMake 错误, 终止所有处理过程

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值