cmake语法

详细
1.编译链接

	project(vins) #工程名
	1. add_executable(vins main.cc vins.cc) #用main.cc vins.cc生成vins可执行文件
	aux_source_directory(<dir> <variable>) #更省事的方法是使用 aux_source_directory 命令,该命令会查找指定目录下的所有源文件,然后将结果存进指定变量名
	aux_source_directory(. DIR_SRCS)# 指定生成目标
	add_executable(Demo ${DIR_SRCS})
2. add_subdirectory(math)  # 指明本项目包含一个子目录 math,这样 math 目录下的 CMakeLists.txt 文件和源代码也会被处理
	target_link_libraries(Demo MathFunctions) #这时候链接math生成的MathFunctions库不需要指定路径了
3. aux_source_directory(. DIR_LIB_SRCS) #将当前文件夹的源文件写入DIR_LIB_SRCS
   add_library (MathFunctions ${DIR_LIB_SRCS}) #生成动态链接库

2.自定义编译选项

configure_file(<input> <output>
               [COPYONLY] [ESCAPE_QUOTES] [@ONLY]
               [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])

configure_file 主要实现如下两个功能:

1.将 文件里面的内容全部复制到 文件中;
2.根据参数规则,替换 @VAR@ 或 ${VAR} 变量;VAR实在CMakeLists里面定义的参数
我们把希望从cmakelist传到工程的变量写到config.h.in里面

#define workspace @workpspace@   //define 会直接根据规则来替换
#cmakedefine USE_MYMATH @USE_MYMATH@
//cmakedefine 会根据变量的值是否为真(类似 if)来变换为 #define VAR ... 或  #undef VAR

则configure_file帮忙自动生成config.h文件

#define workspace /home/aipan/workspace/study_test/learn_cmake   //define 会直接根据规则来替换
#define USE_MYMATH ON
//cmakedefine 会根据变量的值是否为真(类似 if)来变换为 #define VAR ... 或  #undef VAR

注意output的路径一定要带系统路径,不能用相对路径,不然就不生成文件

configure_file("include/config.h.in" "${PROJECT_SOURCE_DIR}/include/config.h")

这样会生成config.h文件

configure_file("include/config.h.in" "include/config.h")

这样就无法生成config.h文件

命令详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值