【CMake】target file 生成路径
-
CMake针对不同类型生成器,参数有所差异,主要区别一下两类生成器:
- 单配置生成器()
- 多配置生成器(multi-configuration generators): VS、Xcode 等
-
target:cmake可构建三种 target files : archive, library, 和 runtime.
- Executables 总是 runtime targets.
- Static libraries 总是 archive targets.
- Module libraries总是 library targets.
- 对 non-DLL 平台,shared libraries 是 library targets.
- 对 DLL 平台, DLL 是 runtime target, 对应的导入库是 archive target. All Windows-based systems including Cygwin 都是 DLL 平台.
1.静态库 配置路径
- CMAKE_ARCHIVE_OUTPUT_DIRECTORY : 用于初始化所有静态库的 ARCHIVE_OUTPUT_DIRECTORY
- CMAKE_ARCHIVE_OUTPUT_DIRECTORY_<CONFIG> : 用于初始化所有静态库指定 构建类型 的 ARCHIVE_OUTPUT_DIRECTORY ,CONFIG 取值:DEBUG\RELEASE等
- ARCHIVE_OUTPUT_DIRECTORY :指定某一静态库的生成文件夹
- ARCHIVE_OUTPUT_DIRECTORY_<CONFIG> :指定某一静态库指定构建类型的生成文件夹
范例:
# 设置静态库的输出目录(选择使用下面的代码)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/out)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${PROJECT_SOURCE_DIR}/out/DEBUG)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/out/RELEASE)
set(ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/out)
set(ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${PROJECT_SOURCE_DIR}/out/DEBUG)
set(ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/out/RELEASE)
2.动态库 配置路径
和静态库类似,将ARCHIVE 换成 LIBRARY
- CMAKE_LIBRARY_OUTPUT_DIRECTORY : 用于初始化所有动态库的 ARCHIVE_OUTPUT_DIRECTORY
- CMAKE_LIBRARY_OUTPUT_DIRECTORY_<CONFIG> : 用于初始化所有动态库指定 构建类型 的 ARCHIVE_OUTPUT_DIRECTORY ,CONFIG 取值:DEBUG\RELEASE等
- LIBRARY_OUTPUT_DIRECTORY :指定某一动态库的生成文件夹
- LIBRARY_OUTPUT_DIRECTORY_<CONFIG> :指定某一动态库指定构建类型的生成文件夹
3.可执行文件 配置路径
-
CMAKE_RUNTIME_OUTPUT_DIRECTORY : 用于初始化所有可执行文件的 ARCHIVE_OUTPUT_DIRECTORY
-
CMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG> : 用于初始化所有 可执行文件 指定 构建类型 的 ARCHIVE_OUTPUT_DIRECTORY ,CONFIG 取值:DEBUG\RELEASE等
-
RUNTIME_OUTPUT_DIRECTORY :指定某一可执行文件的生成文件夹
-
RUNTIME_OUTPUT_DIRECTORY_<CONFIG> :指定某一可执行文件指定构建类型的生成文件夹
-
EXECUTABLE_OUTPUT_PATH :如果设置了 RUNTIME_OUTPUT_DIRECTORY ,则该变量无效,否则可执行文件将放在 EXECUTABLE_OUTPUT_PATH 中
LIBRARY_OUTPUT_PATH
Old library location variable.
The target properties ARCHIVE_OUTPUT_DIRECTORY, LIBRARY_OUTPUT_DIRECTORY, and RUNTIME_OUTPUT_DIRECTORY supersede this variable for a target if they are set. Library targets are otherwise placed in this directory.