cmake多级目录(cmake生成多个可执行文件)

cmake多级目录(cmake生成多个可执行文件)nbsp nbsp nbsp nbsp 这里的文件存储方式如下 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 其中 build 是构建目录 即构建的结果和中间产物都在该目录下 include 是包含目录 src 是子函数的目录或是依赖文件的目录 main cpp 主函数 从上图的右边可以发现 src 里存在 add cpp 和一个对应的 cmakelists txt 文件 同时根目录下也存在一个 cmakelists txt 文件 nbsp nbsp nbsp 上面的代码就是两个源文件的代码 很简单



        这里的文件存储方式如下:

         

其中build是构建目录,即构建的结果和中间产物都在该目录下

include是包含目录

src是子函数的目录或是依赖文件的目录

main.cpp主函数

从上图的右边可以发现src里存在add.cpp和一个对应的cmakelists.txt文件,同时根目录下也存在一个cmakelists.txt文件

 
  

     上面的代码就是两个源文件的代码,很简单,主函数调用另个一文件的子函数add完成运算和输出,下面看看如何使用cmake进行构建

根目录下的CMakeLists.txt

 
  

上面的作用都进行了详细的解释,这里需要强调的是几个命令:

set指令的语法是:
set(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])
现阶段,你只需要了解SET指令可以用来显式的定义变量即可。
比如我们用到的是SET(SRC_LIST main.c),如果有多个源文件,也可以定义成:
set(SRC_LIST main.c t1.c t2.c)。



message指令的语法是:
message([SEND_ERROR | STATUS | FATAL_ERROR] "message to display"...)
这个指令用于向终端输出用户定义的信息,包含了三种类型:
SEND_ERROR,产生错误,生成过程被跳过。
SATUS — ,输出前缀为 的信息。



FATAL_ERROR,立即终止所有cmake 过程.
我们在这里使用的是STATUS 信息输出,演示了由PROJECT 指令定义的两个隐式变量
HELLO_BINARY_DIR和HELLO_SOURCE_DIR。

add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])
这个指令用于向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制存
放的位置。EXCLUDE_FROM_ALL参数的含义是将这个目录从编译过程中排除,比如,工程
的example,可能就需要工程构建完成后,再进入 example目录单独进行构建(当然,你
也可以通过定义依赖来解决此类问题)。
上面的例子定义了将src子目录加入工程,并指定编译输出(包含编译中间结果)路径为
bin目录。如果不进行 bin目录的指定,那么编译结果(包括中间结果)都将存放在
build/src 目录(这个目录跟原有的src目录对应),指定 bin 目录后,相当于在编译时
将src重命名为bin,所有的中间结果和目标二进制都将存放在bin目录。







src目录下的CMakeLists.txt

 
  

最后编译结果为:

进入build目录在linux目录行键入:cmake  ..   然后make

 构建后,在build中会创建bin目录和lib目录还有对应的src,观察后会发现,src是中间产物,最终的可执行文件在bin文件夹下,src生成的库文件在lib文件夹下,大家多尝试修改,就明白了。

今天的文章 cmake多级目录(cmake生成多个可执行文件)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2026-01-21 10:57
下一篇 2026-01-21 11:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/34348.html