include()没有引入新的变量范围,而add_subdirectory()引入了。 默认情况下,这两个命令都引入了一个新的策略范围,但是可以使用NO_POLICY_SCOPE选项告诉include()命令不要这样做(add_subdirectory()没有这样的选项)。 CMAKE_CURRENT_SOURCE_DIR和CMAKE_CURRENT_BINARY_DIR变量的值在处理由include()命名的文件时不会...
add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL]) 添加一个子目录并构建该子目录。 命令解析 source_dir 必选参数。该参数指定一个子目录,子目录下应该包含CMakeLists.txt文件和代码文件。子目录可以是相对路径也可以是绝对路径,如果是相对路径,则是相对当前目录的一个相对路径。 binary_dir 可选参...
CMakeLists也可以解析外部的CMake语法,他是由“include” 或者“add_subdirectory”包含进来,两者的区别后面会说到。 解析完这些变量,cmake在内存中有了项目(可执行程序、库、用户自定义Command)的构建表达方法。在代码中一个target用cmTarget对象表示,所有的cmTarget构成了cmMakefile对象。 图2、CMakeCache.txt的 ...
cmake_minimum_required(VERSION3.0)# 指定项目名称和语言project(ExampleProject CXX)# 显式包含 CMakeDetermineCXXCompiler 模块INCLUDE(${CMAKE_ROOT}/Modules/CMakeDetermineCXXCompiler.cmake)# 其他项目配置和设置set(SOURCE_FILES main.cpp)add_executable(ExampleExecutable${SOURCE_FILES})# 输出所选择的编译器m...
#include <iostream> #include "hello.h" void HelloFunc(){ std::cout << "Hello World" << std::endl; } 项目中的cmake内容 PROJECT(HELLO) ADD_SUBDIRECTORY(lib bin) lib中CMakeLists.txt中的内容 SET(LIBHELLO_SRC hello.cpp)ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC}) ...
#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_TEST) ...
CMAKE_INCLUDE_PATH:环境变量,非cmake变量; CMAKE_LIBRARY_PATH:环境变量; CMAKE_CURRENT_SOURCE_DIR:当前处理的CMakeLists.txt文件所在路径; CMAKE_CURRENT_BINARY_DIR:target编译目录; 使用ADD_SURDIRECTORY指令可以更改该变量的值; SET(EXECUTABLE_OUTPUT_PATH < dir >) 指令不会对该变量有影响,但改变了最终...
add_subdirectory(MathFunctions) 接下来,使用 target_link_libraries()[16] 将新库目标链接到可执行目标。 target_link_libraries(Tutorial PUBLIC MathFunctions) 最后我们需要指定库的头文件位置。修改 target_include_directories()[17] 以将MathFunctions 子目录添加为包含目录,以便可以找到 MathFunctions.h 头文件。
project(): 定义项目名称和版本。 cmake_minimum_required(): 指定 CMake 的最低版本要求。 add_executable(): 生成可执行文件。 add_library(): 生成库文件。 target_link_libraries(): 链接库文件。 include_directories(): 添加头文件目录。 find_package(): 寻找并加载外部库。
在Linux环境使用CMake的构建和编译流程如下: step1.编写CMake的配置文件——CMakeLists.txt。 step2.执行命令 cmake PATH 或者 ccmake PATH 构建生成 Makefile配置文件。PATH为CMakeLists.txt所在的目录。 step3.在Makefile文件所在的路径,执行make命令进行编译。