CMake输出目录(按平台)

CMake output directory by platform

本文关键字:平台 输出 CMake      更新时间:2023-10-16

我想根据平台/编译器/架构/配置将我的库输出到不同的文件夹中,所以它应该是这样的:

平台(arch(-编译器(版本(-配置

例如:

win32-vc12.0-debug
win32-vc12.0-release
win64-vc14.0-debug
win64-vc14.0-release
unix-gcc6.1-debug
unix-gcc6.1-release
unix-clang3.8-debug
unix-clang3.8-release

事实上,我不知道如何生成这些,有人能指导我吗?感谢

一种方法是为项目设置bin目录:

math(EXPR platform_bits "${CMAKE_SIZEOF_VOID_P} * 8")
set(platform_dir ${CMAKE_SYSTEM_NAME}${platform_bits}-${CMAKE_CXX_COMPILER_ID}${CMAKE_CXX_COMPILER_VERSION})
foreach(config DEBUG RELEASE RELWITHDEBINFO MINSIZEREL)
    foreach(var CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${config} CMAKE_LIBRARY_OUTPUT_DIRECTORY_${config} CMAKE_RUNTIME_OUTPUT_DIRECTORY_${config})
        set(${var} "${CMAKE_BINARY_DIR}/${platform_dir}-${config}")
        string(TOLOWER "${${var}}" ${var})
    endforeach()
endforeach()

这不会为您提供所需的确切目录名,但却是一个良好的开端。您可以在CMake变量列表中查看特定于平台的配置信息列表。然后,您需要应用一些逻辑,将CMake定义的值转换为您要查找的特定值。