cmake常用函数
cmake的常用函数
cmake_minimum_required(VERSION 3.0) #指定cmake的最小版本
project(demo) # 设置项目名称
add_executable(demo demo.cpp) # 生成可执行文件 demo.cpp 可以是一系列文件的集合
add_library(demo STATIC demo.cpp) # 生成静态库 libdemo.a
add_library(demo SHARED demo.cpp) # 生成共享库(动态库) libdemo.so
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -rdynamic -O2 -Wall -Wno-pointer-to-int-cast\
-Wno-incompatible-pointer-types -Wno-pointer-sign\
-Wno-missing-braces -Wno-format") #指定Gcc的编译参数,如果不怕麻烦,可以在这里显式的指定-I -L的参数
add_library(demo SHARED EXCLUDE_FROM_ALL demo.cpp) # 生成共享库(动态库) libdemo.so 设置EXCLUDE_FROM_ALL参数后,只有显式的执行 make demo才会生成动态库
set(LIBRARY_OUTPUT_PATH, $(PROJECT_SOURCE_DIR}/output) # 指定库文件输出路径
set(cjson_install ${PROJECT_SOURCE_DIR}/3rd_opensrc/cjson_install/${LIB}) # 也可以这样给自己指定的变量赋值
aux_source_directory(${PROJECT_SOURCE_DIR}/src DIR_SRC) #源码的c/c++文件目录
include_directories(${PROJECT_SOURCE_DIR}/include) # 源码的头文件目录
link_directories(${PROJECT_SOURCE_DIR}/lib) # 添加链接库的目录,这里只是添加链接库的目录
add_executable(demo ${DIR_SRC}) # 使用一系列文件生成demo
target_link_libraries(${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/app_hello/libhello.so) # 链接库文件,可以是静态也可以是动态,后面同样可以是一些列的集合,这里如果之前指定了libhello.so的目录,可以直接简化成hello,类似makefile的 -L
if…elseif…else…endif # 逻辑判断和比较:
if (expression):# expression 不为空(0,N,NO,OFF,FALSE,NOTFOUND)时为真
if (not exp):# 与上面相反
if (var1 AND var2)
if (var1 OR var2)
if (COMMAND cmd):# 如果 cmd 确实是命令并可调用为真
if (EXISTS dir) if (EXISTS file):# 如果目录或文件存在为真
if (file1 IS_NEWER_THAN file2):# 当 file1 比 file2 新,或 file1/file2 中有一个不存在时为真,文件名需使用全路径
if (IS_DIRECTORY dir):# 当 dir 是目录时为真
if (DEFINED var):# 如果变量被定义为真
if (var MATCHES regex):# 给定的变量或者字符串能够匹配正则表达式 regex 时为真,此处 var 可以用 var 名,也可以用 ${var}
if (string MATCHES regex)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)