摘要:
9. 嵌套的 CMake 如果项目很大,或者项目中有很多的源码目录,在通过 CMake 管理项目的时候如果只使用一个 CMakeLists.txt ,那么这个文件相对会比较复杂,有一种化繁为简的方式就是给每个源码目录都添加一个 CMakeLists.txt 文件(头文件目录不需要),这样每个文件都不 阅读全文
摘要:
8. 宏定义 在进行程序测试的时候,我们可以在代码中添加一些宏定义,通过这些宏来控制这些代码是否生效。 如下所示,新建一个文件 test.cpp #include <iostream> int main() { int num = 42; #ifdef DEBUG std::cout << "这是一 阅读全文
摘要:
7. 变量操作 有时候项目中的源文件并不一定都在同一个目录中,但是这些源文件最终却需要一起进行编译来生成最终的可执行文件或者库文件。如果我们通过file命令对各个目录下的源文件进行搜索,最后还需要做一个字符串拼接的操作,关于字符串拼接可以使用 set 命令也可以使用 list 命令。 7.1 使用 阅读全文
摘要:
6. 打印日志信息 在CMake中可以用用户显示一条消息,该命令的名字为message: message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] "message to display" ...) (无):重要信息 STATUS: 阅读全文
摘要:
5. 库相关 有些时候我们编写的源代码并不需要将他们编译生成可执行程序,而是生成一些静态库或动态库提供给第三方使用,下面来讲解在cmake中生成这两类库文件的方法。 5.1 什么是库 本部分介绍创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的 阅读全文
摘要:
4. 搜索文件 如果一个项目里边的源文件很多,在编写 CMakeLists.txt 文件的时候不可能将项目目录的各个文件一一罗列出来,这样太麻烦也不现实。所以,在 CMake 中为我们提供了搜索文件的命令,可以使用 aux_source_directory 命令或者 file 命令。 4.1 方式一 阅读全文
摘要:
3. set 的使用 因为在实际工程中,我们不会将具体文件全部写出来,这是一件费力不讨好的事情。 3.1 set 定义变量 在 CMake 文件中,默认的变量数据类型是字符串,如果要用别的类型,需要进行转换 在上面的例子中一共提供了 5 个源文件,假设这 5 个源文件需要反复被使用,每次都直接将它们 阅读全文
摘要:
2. CMake 的简单使用 我们创建一个工程目录,在里面定义一些简单的加减乘除运算,然后定义一个 main.cpp 的文件: 结构如下: tree /f .\ D:\SOURCE\CMAKE_PROJ └─proj1 add.cpp CMakeLists.txt div.cpp head.h ma 阅读全文
摘要:
1. CMake 概述 CMake 可以用来构建C/C++工程,可以跨平台。允许开发者指定整个工程的编译流程 在CMake 没有出来之前,开发者需要手写 makefile,但是不同平台下的 makefile 写法不同,所以移植软件的难度就很大。而 CMake 可以自动生成本地化的工程文件和 make 阅读全文