include()没有引入新的变量范围,而add_subdirectory()引入了。 默认情况下,这两个命令都引入了一个新的策略范围,但是可以使用NO_POLICY_SCOPE选项告诉include()命令不要这样做(add_subdirectory()没有这样的选项)。 CMAKE_CURRENT_SOURCE_DIR和CMAKE_CURRENT_BINARY_DIR变量的值在处理由include()命名的文件时不会...
addSubdirectoryTest.cpp #include <iostream> #include "addSubdirectoryTest.h" void test() { std::cout << "子项目测试" << std::endl; } 1. 2. 3. 4. 5. 6. CMakeLists.txt 文件内容: cmake_minimum_required (VERSION 3.8) project(addSubdircotryTest) aux_source_directory(. DIR_MY_LIB_...
当然,也可以在main.c里使用include来指定路径. 2.add_subdirectory()这个命令可以向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制的存放位置.add_subdirectory (src),这里指定src目录下存放了源文件,当执行cmake时,就会进入src目录下去找src目录下的CMakeLists.txt,所以在src目录下也建立一个CM...
ADD_SUBDIRECTORY(src bin) src中CMakeLists.txt中的内容 ADD_EXECUTABLE(hello main.cpp) 外部编译过程: 进入build,运行 cmake … 在build 目录下,运行 make 命令编译 Makefile 文件。注意此时 make 会报错: 解决:make 后头文件找不到的问题 make 时会提示找不到头文件,两种解决方法: 修改成 include <hello...
add_executable(http-server main.c) include_directories(${CMAKE_SOURCE_DIR}/../lib) target_include_directories(http-server PUBLIC ${CMAKE_SOURCE_DIR}/../lib) target_link_libraries(http-server mylib) 我们使用add_subdirectory命令将lib目录添加为子目录,当CMake执行到这里的时候就会跳到lib目录下搜索...
#include <string> void test(std::string str); # sub/CMakeLists.txt cmake_minimum_required(VERSION 3.10.2) project(sub) add_library(sub test.cpp) 场景1:父目录CMakeLists.txt的add_subdirectory只指定了source_dir。 # 父目录下的CMakeLists.txt ...
add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL]) 这条命令的作用是为构建添加一个子路径。source_dir选项指定了CMakeLists.txt源文件和代码文件的位置。如果source_dir是一个相对路径,那么source_dir选项会被解释为相对于当前的目录,但是它也可以是一个绝对路径。binary_dir选项指定了输出文件的路径...
你应该在终端上运行“cmake”和“make”命令。很多人只是盲目地按照指示,不是真的关心为什么我们需要以...
先来窥探下CMakeCache.txt的构成,CmakeCache.txt由两部分构成:External Cache Entries和Internal Cache Entries。而CMakeCache.txt是由解析器Parser生成。解析器的匹配器找到各种token。CMakeLists也可以解析外部的CMake语法,他是由“include” 或者“add_subdirectory”包含进来,两者的区别后面会说到。
这就是我们讨论项目分区的理由。我们分析了使用include()的简单代码分区,并将其与add_subdirectory()进行了比较。在此过程中,我们了解了管理变量目录作用域的好处,并探讨了使用更简单的路径和增加的模块性的好处。当需要逐步将代码分解为更独立的单元时,创建嵌套项目和分别构建它是非常有用的。