1

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

4

1 回答 1

1

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

  • CMAKE_SYSTEM_NAME(窗口,Linux,达尔文),
  • 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)
于 2013-06-11T13:29:56.100 回答