【CMake】target file 生成路径

  • CMake针对不同类型生成器,参数有所差异,主要区别一下两类生成器:

    1. 单配置生成器()
    2. 多配置生成器(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.

posted @ 2023-02-03 10:38  小超不挑食  阅读(580)  评论(0编辑  收藏  举报