不管是SUBDIRS还是ADD_SUBDIRECTORY指令(不论是否指定编译输出目录),我们都可以通过SET指令重新定义EXECUTABLE_OUTPUT_PATH和LIBRARY_OUTPUT_PATH变量来指定最终的目标二进制的位置(指最终生成的hello或者最终的共享库,不包括编译生成的中间文件) SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) SET(LIBRARY_OUTPUT_...
举个例子,当在函数内通过set()或unset()将变量”v”与当前函数作用域绑定时,变量”v”的新值仅在函数作用域内有效,出了这个作用域,如果这个作用域外也有同名的变量”v”,那么使用将是域外同名变量”v”的值。第二,针对目录作用域(Directory Scope): Each of the Directories in a source tree has its own...
CMake : How to get the name of all subdirectories of a directory? MACRO(SUBDIRLIST result curdir) FILE(GLOB children RELATIVE ${curdir} ${curdir}/*) SET(dirlist "") FOREACH(child ${children}) IF(IS_DIRECTORY ${curdir}/${child} AND EXISTS ${curdir}/${child}/CMakeLists.txt) LIST...
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Bin) # 设置分别设置Debug和Release输出目录 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/Lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/Lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_...
1.1 CMake构建后的目录结构(Directory Structure After CMake Build) CMake构建完成后,会在项目的根目录下生成一个名为build的目录。这个目录是CMake构建过程中所有中间文件和最终生成的目标文件的存放地。下面我们将详细解析这个目录的结构。 首先,我们来看一下build目录的一级子目录: ...
cmake_minimum_required(VERSION 3.20.0) project(ODR CXX) set(CMAKE_CXX_STANDARD 20) add_executable(odr one.cpp two.cpp) 正如你所看到的,这是非常直接的——我们创建了一个shared.h头文件,它在两个单独的翻译单元中使用: one.cpp文件,它简单地将i打印到屏幕上 two.cpp文件,它除了包含头文件外什么...
aux_source_directory(driver SRC_LIST) #例子2,将当前CMakeLists.txt目录下源文件(*.c或者*.cpp装载到SRC_LIST中) aux_source_directory(. SRC_LIST) #方式2:直接设置变量包含的源文件 set(变量名 变量需装载的内容) #例子1,将原SRC_LIST变量中的内容和1.c 2.c 3.c源文件装载到SRC_LIST变量中去 ...
举个例子,当在函数内通过set()或unset()将变量”v”与当前函数作用域绑定时,变量”v”的新值仅在函数作用域内有效,出了这个作用域,如果这个作用域外也有同名的变量”v”,那么使用将是域外同名变量”v”的值。第二,针对目录作用域(Directory Scope): ...
It changes cache structure, so all dependencies are downloaded again. There is no problem to mix both structures in one cache directory but then there may be 2 copies of some dependencies. This can also be set as an environmental variable....