cmake_minimum_required(VERSION 3.10.2)project(test)add_subdirectory(sub output) 在父目录下调用cmake .构建之后,在output目录下会出现libsub.a库,sub目录下则没有libsub.a。说明当指定binary_dir,输出目标文件就会放到binary_dir目录下。 场景3:父目录CMakeLists.txt的add_subdirectory指定了EXCLUDE_FROM_ALL选...
这一点其实与刚开始讲的 function() 、add_subdirectory() 完全不同,在函数以及 add_subdirectory() 中,他们本身就是一个不同的作用域范围,仅仅通过拷贝调用者的 Normal 值(仅仅在调用 add_subdirectory() / function() 之前的 Normal 变量),如果要修改调用者包含的 Normal 变量,那么只能通过set(MY_VAL "某个...
set(ENV{<variable>} [<value>]) #设置环境变量 添加目录add_subdirectory add_subdirectory(source_dir[binary_dir][EXCLUDE_FROM_ALL]) source_dir:拥有CMakeLists.txt的子目录 命令执行将会跳到子目录执行里层的CMakeLists.txt 设置生成程序add_executable add_executable(<name>[WIN32][MACOSX_BUNDLE][EXCLUD...
作用域属于整个 CMakeLists.txt 文件,当该文件包含了 add_subdirectory()、include()、macro()、function() 语句时,会出现两种不同的效果。 (1)、包含 add_subdirectory()、function()。(本质是值拷贝) 假设,我们在工程根目录 CMakeLists.txt 文件中使用 add_subdirectory(src) 包含另一个 src 目录,在 ...
CMake在调用add_subdirectory命令的时候就已经将CMAKE_ARCHIVE_OUTPUT_DIRECTORY变量设置好了,在链接的时候就去这个里面找。 好了,到这里为止,添加CMake子目录就搞定了。上面的示例中我们使用的是动态链接库,你可以自己尝试改成静态链接库编译试一下。代码打了tag:v1.4 ...
(4)CMAKE_CURRRENT_BINARY_DIR,如果是in-source 编译,它跟 CMAKE_CURRENT_SOURCE_DIR 一致,如果是out-of-source 编译,他指的是target 编译目录。使用ADD_SUBDIRECTORY(src bin)可以更改这个变量的值。使用SET(EXECUTABLE_OUTPUT_PATH <新路径>)并不会对这个变量造成影响,它仅仅修改了最终目标文件存放的路径。
add_subdirectory(sub) 1. 2. 3. 4. 5. 在父目录下调用cmake .构建之后,在sub目录下会出现libsub.a库,说明当不指定binary_dir,输出目标文件就会放到source_dir目录下。 场景2:父目录CMakeLists.txt的add_subdirectory指定了source_dir和binary_dir。
# 添加src子目录add_subdirectory(src) # 编译源码生成目标add_executable(CMake_Pro main.cpp)# 包含头文件路径target_include_directories(CMake_Pro PUBLIC "./include/")# 添加链接库target_link_libraries(CMake_Pro Cal) 下级CMakeLists.txt:
add_subdirectoryandfunctioncreate new scope includeandmacrowork in the current scope 缓存变量(全局变量) 缓存变量由如下特点: 缓存变量是全局作用域, 变量的值会从CMakeCache.txt中获取,缓存变量在写入CMakeCache.txt以后, 每次都从这个缓存文件中读取该值, 而不会重新调用set(... CACHE ...)!!!(Cache变量...