FindPackage.cmake
剧本有些脚本(即SDL)在cmake本身中可用,因此查找包相对容易。
虽然在我的例子中,SDL搜索脚本(SDL、SDL_图像、SDL_混合器)几乎从现代cmake出现(至少3.1版)起就可以使用,但它们不提供现代方法的手段-它们不定义导入的cmake目标。SDL作为目标仅在3.19之后才可用,并且它没有定义
IMPORTED_LOCATION
因此,合理的做法是定义这些目标和属性。
FindSDL.cmake
从较新的cmake捆绑包中复制并粘贴修改。
但我想保持cmake包(或来自外部源的另一个足够好的脚本)中的这些文件完好无损,只需包装它们。
CMakeLists.txt
我想:
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/modules")
find_package(SDL REQUIRED)
find_package(SDL_mixer REQUIRED)
find_package(SDL_image REQUIRED)
cmake/modules/FindSDL.cmake
:
find_package(SDL REQUIRED)
if (NOT TARGET SDL::SDL)
# add target and properties here
endif()
-
find_package
写包装时
FindPackage.cmake
FindPackage.cmake
文件
-
是否可以处理和\或重定向
查找包
REQUIRED
?
这看起来很有希望:
How to execute CMake's default find module from my own find module with the same name?