如何指定随代码提供的库二进制文件的位置?这是二进制存储的文件夹结构:
├───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
中,但是还有其他方法可以更好地做到这一点吗?