无论平台如何,为动态库选择正确的文件结尾

时间:2012-11-16 21:49:20

标签: cmake

我正在使用CMake 2.8.8和ExternalProject模块。 CMake检索项目的源文件并正确构建它们(在unix上生成project.aproject.so个文件。我想总是使用动态库。我怎么能这样做,仍然是跨平台的?

我试过

list(
    APPEND foo_LIBRARIES
    ${binary_dir}/${CMAKE_FIND_LIBRARY_PREFIXES}project${CMAKE_FIND_LIBRARY_SUFFIXES}
)

但这不起作用,因为{CMAKE_FIND_LIBRARY_SUFFIXES}.a;.so的列表。

list(
    APPEND foo_LIBRARIES
    ${binary_dir}/${CMAKE_FIND_LIBRARY_PREFIXES}project.so
)

有效,但仅适用于unix系统。有没有一种干净的方法来实现这一目标?

1 个答案:

答案 0 :(得分:2)

鉴于WIN32 ${CMAKE_FIND_LIBRARY_SUFFIXES}只是.lib,您可以执行以下操作:

set(ProjectSuffix ${CMAKE_FIND_LIBRARY_SUFFIXES})
list(REMOVE_ITEM ProjectSuffix .a)
list(APPEND foo_LIBRARIES
    ${binary_dir}/${CMAKE_FIND_LIBRARY_PREFIXES}project${ProjectSuffix})