Как использовать cmake для поиска бинарных файлов, представленных в моем проекте? - PullRequest
0 голосов
/ 09 июля 2019

Как я могу указать расположение двоичных файлов библиотек, которые я предоставляю с моим кодом?Вот структура папок для двоичного хранилища:

├───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, но есть ли другой способ сделать это лучше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...