与CMake相关的平台相关输出文件位置名称

时间:2013-06-11 11:01:11

标签: cmake

我有一个与如何使用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中的输出文件位置,但是如何使路径依赖于平台是我所不知道的。任何想法将不胜感激。

1 个答案:

答案 0 :(得分:1)

CMake提供了三个变量来描述系统:

  • CMAKE_SYSTEM_NAME(Window,Linux,Darwin),
  • CMAKE_SYSTEM_PROCESSOR(取决于操作系统,例如Linux上的i386,Windows上的x86等)
  • CMAKE_SYSTEM_VERSION(也取决于操作系统)

您可以使用这些变量来构建输出路径,例如:

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)