Как я могу указать расположение двоичных файлов библиотек, которые я предоставляю с моим кодом?Вот структура папок для двоичного хранилища:
├───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
, но есть ли другой способ сделать это лучше?