如何使用cmake查找我的项目中提供的二进制文件?

时间:2019-07-09 05:18:01

标签: cmake

如何指定随代码提供的库二进制文件的位置?这是二进制存储的文件夹结构:

├───include
│   ├───blas
│   ├───glew
│   │   └───GL
│   ├───nlohmann
│   ├───sdl2
│   └───suitesparse
├───linux
│   ├───bin_x64_debug
│   ├───bin_x64_release
│   ├───lib_x64_debug
│   └───lib_x64_release
├───mac
│   ├───bin_x64_debug
│   ├───bin_x64_release
│   ├───lib_x64_debug
│   └───lib_x64_release
└───windows
    ├───bin_x64_debug
    ├───bin_x64_release
    ├───lib_x64_debug
    └───lib_x64_release

我不希望人们为通用设置而从头开始构建库。

这是我之前的工作:

if(TARGET_PLATFORM_WINDOWS)
    set(EXTERNAL_HEADERS "${CMAKE_SOURCE_DIR}/External/include")
    include_directories(${EXTERNAL_HEADERS}/sdl2)
    include_directories(${EXTERNAL_HEADERS}/glew)
    include_directories(${EXTERNAL_HEADERS}/nlohmann)
    include_directories(${EXTERNAL_HEADERS}/blas)
    include_directories(${EXTERNAL_HEADERS}/suitesparse)
endif()


if(TARGET_PLATFORM_LINUX)
    set(EXTERNAL_HEADERS "${CMAKE_SOURCE_DIR}/External/include")
    find_package(SDL2 REQUIRED)
    include_directories(${SDL2_INCLUDE_DIRS})
    find_package(GLEW REQUIRED)
    include_directories(${GLEW_INCLUDE_DIRS})
    include_directories(${EXTERNAL_HEADERS}/nlohmann)
endif()

但是我希望我的库可以使用Find${Module}。这是我的FindSDL2代码:

FIND_PATH(SDL2_INCLUDE_DIR SDL.h
    HINTS
    $ENV{SDL2DIR}
    PATH_SUFFIXES include/SDL2 include
    PATHS
    ${PROJECT_SOURCE_DIR}/External
    /usr/local/include/SDL2
    /usr/include/SDL2
    /sw # Fink
    /opt/local # DarwinPorts
    /opt/csw # Blastwave
    /opt
)

FIND_LIBRARY(SDL2_LIBRARY_TEMP
    NAMES SDL2
    HINTS
    $ENV{SDL2DIR}
    PATH_SUFFIXES lib64 lib
    PATHS
    /sw
    /opt/local
    /opt/csw
    /opt
)

我想知道执行此操作的正确方法。我的意思是我可以获取构建架构和类型并将其放入PATH_SUFFIXES中,但是还有其他方法可以更好地做到这一点吗?

0 个答案:

没有答案