我有一个与如何使用CMake设置输出文件(库和可执行程序)的位置相关的问题。我想编译我的库并分别在32平台和64平台上构建它。例如,Windows中库的输出文件路径应为:
/path/to/library/32/compile_option/library_name.dll
/path/to/library/64/compile_option/library_name.dll
取决于其平台(32/64)。现在我的问题是如何用CMake做到这一点。我知道通过设置set(LIBRARY_OUTPUT_PATH Project_OUTPUT)
我们可以更改CMake中的输出文件位置,但是如何使路径依赖于平台是我所不知道的。任何想法将不胜感激。
答案 0 :(得分:1)
CMake提供了三个变量来描述系统:
您可以使用这些变量来构建输出路径,例如:
if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86")
set(MY_PATH_BITS "32")
else()
set(MY_PATH_BITS "64")
endif()
你可以为编译选项做同样的事情(因为我猜他们是从CMake变量设置的):
if (USE_SOME_FLAG)
add_definitions( ... )
set(MY_PATH_FLAGS "${MY_PATH_FLAGS}-someflag")
endif()
然后从这些变量构建输出路径:
set(LIBRARY_OUTPUT_PATH
/path/to/library/${MY_PATH_BITS}/${MY_PATH_FLAGS}/library_name.dll)