1.添加头文件目录: 因为当前根目录的main.cpp需要引用到Dog.h头文件,所以需要通过include_directories引用头文件目录,注意CMakeLists的目录是相对于当前CMakeLists文件而言的。 2.add_subdirectory,官方的说明是 Add a subdirectory to the build. 就是要让当前的CMakeLists可以执行到执指定子目录的CMakeLists进而构建...
INCLUDE_DIRECTORIES 找头文件。 INCLUDE_DIRECTORIES(${PROJECT_CURRENT_SOURCE_DIR}/dir1) ADD_SUBDIRECTORY 增加编译的子目录。 ADD_SUBDIRECTORY (${PORJECT_SOURCE_DIR}/dir1) ADD_LIBRARY 生成库文件(默认生成静态库)。 ADD_LIBRARY (test1 SHARED Demo.cpp)生成动态库 ADD_LIBRARY (test2 STATIC Demo.cpp)生...
首先是Makefile 文件和include文件夹还有src文件夹在同一个目录下 头文件hello.h在include目录下 源文件main.cpp和hello.cpp在src目录下 /// hello.h: #ifndef _HELLO_H__ #define _HELLO_H__ void hello(); #endif /// hello.cpp: #include<iostream> #include"hello.h" using namespace std; void ...
使用范例:add_subdirectory(Lib) 7)include_directories 命令 命令语法:include_directories([AFTER|BEFORE] [SYSTEM] dir1 dir2 …) 命令简述:用于设定目录,这些设定的目录将被编译器用来查找 include 文件 使用范例:include_directories(${PROJECT_SOURCE_DIR}/lib) 像这样的命令还有很多,如find_package()寻找使用...
这里的${CMAKE_CURRENT_SOURCE_DIR}表示CMakeLists.txt所在的目录。而GLOB_RECURSE可以递归地去搜索Box2D目录下面所有的.cpp文件来参与静态库的编译。而include_directories和file指令,显而易见,它们是用来指定静态库的头文件和实现文件。 注:指定头文件的原则是:可以多引入,但不能缺。交叉编译本质也是编译,因此基本...
pattern为需要查找的文件匹配模式信息,directories为要查找的文件路径,比如 vpath %.h ../headers 其代表在上一层文件夹headers中查找 .h头文件信息。 6、依赖关系生成 在编写c文件代码时,我们经常通过#include 语句来包含其它文件信息,比如头文件,该c文件被编译时需要依赖于其#include包含进来的文件,在规则编写中,...
首先是Makefile 文件和include文件夹还有src文件夹在同一个目录下 头文件hello.h在include目录下 源文件main.cpp和hello.cpp在src目录下 /// hello.h: #ifndef _HELLO_H__ #define _HELLO_H__ void hello(); #endif /// hello.cpp: #include<iostream> ...
include_directories()头文件 add_compile_option()其他 PS:set某个变量也可以间接设置预处理命令。 综上,如果你需要增加一个编译选项,按选项的性质选择上述三个即可,直接使用add_definitions因为“粒度太大”而不再被推荐使用。多个 例子: 利用BUILD_ALL宏定义条件编译代码: ...
读入被include的其它Makefile。 始化文件中的变量。 推导隐晦规则,并分析所有规则。 为所有的目标文件创建依赖关系链。 根据依赖关系,决定哪些目标要重新生成。 执行生成命令。 1-5步为第一个阶段,6-7为第二个阶段。第一个阶段中,如果定义的变量被使用了,那么,make会把其展开在使用的位置。但make并不会完全马上...
其包括了三个部分,一个是在一个 Makefile 中引用另一个 Makefile,就像C语言中的 include 一样;另一个是指根据某些情况指定 Makefile 中的有效部分,就像C语言中的预编译 #if 一样;还有就是定义一个多行的命令。有关这一部分的内容,我会在后续的部分中讲述。