CMAKE使用

CMAKE使用,第1张

CMALKE是一款开源的跨平台构建系统,这个名字是"Cross platform Make"的缩写。其工作依赖于 CMakeLists.txt 文件,通过该文件生成不同平台下对应的构建体。

跨平台构建时可从一下预定义区分编译环境:

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命令传入:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11460901.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存