按平台划分的 CMake 输出目录
CMake output directory by platform
我想根据 platform/compiler/architecture/configuration 将我的库输出到不同的文件夹中,因此它应该如下所示:
平台(架构)-编译器(版本)-配置
举几个例子:
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
我真的不知道如何生成这些,谁能指导我吗?
谢谢
一种方法是 set the bin directories 项目:
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 variables list 以获得平台特定配置信息的列表。然后,您需要应用一些逻辑,将 CMake 定义的值转换为您正在寻找的特定值。
我想根据 platform/compiler/architecture/configuration 将我的库输出到不同的文件夹中,因此它应该如下所示:
平台(架构)-编译器(版本)-配置
举几个例子:
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
我真的不知道如何生成这些,谁能指导我吗? 谢谢
一种方法是 set the bin directories 项目:
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 variables list 以获得平台特定配置信息的列表。然后,您需要应用一些逻辑,将 CMake 定义的值转换为您正在寻找的特定值。