跨平台构建时可从一下预定义区分编译环境:
cmake会将设置的变量存入 PROJECT_NAME 与 CMAKE_PROJECT_NAME 中。后续可以使用 ${PROJECT_NAME} 或 ${CMAKE_PROJECT_NAME} 调用。
将目录 dir 中的文件名,全部存入 variable 中。(这里不会递归调用子目录)
从源文件树收集文件列表,写入变量 variable 中。GLOB_RECURSE 将会递归所有匹配文件夹的子文件夹和匹配的文件。
source_group() 用于定义生成 IDE 工程时的源码分组。
使用指定的源文件将可执行文件添加到项目中,只有在 add_executable() 中的文件才会被 source_group 分组。
当添加外部库时,程序的编译构建需要以下信息:
这里需要区分链接路径和运行路径:连接器在处理动态库时将链接时路径(Link-time path)和运行时路径(Run-time path)分开,用户可以通过-L指定连接时库的路径,通过-R(或-rpath)指定程序运行时库的路径。
cmake设定 link_directories 添加链接器查找库的目录:
cmake设定 rpath :
系统自带的库的安装路径,在不同的机器上可能不同,使用cmake的find_package可自动搜索该路径。
以查找 JPEG 为例,系统如果找到了JPEG模块,那么cmake会设置以下变量供CMakeLists.txt使用:
还可以在此参数后使用--target指定make的参数,cmake --build . --target all即相当于:
使用configure_file命令,并且要把可执行文件生成目录加进来,因为生成的头文件就在该目录下。
需要新建一个project_config.h.in的文件,并在文件内添加如下两行:
上层目录的CMakeLists.txt的文件需要增加如下内容,一是包含mymath的目录,二是将生成的mymath库链接到最后的可执行文件;可以通过一个开关来打开或者关闭,也可在cmake命令中加入-D参数来传入开关选项(宏定义)
通过option传递开关:
通过cmake命令传入:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)