if (NOT BROTLI_FOUND) # Necessary because the file may be invoked multiple times
message(NOTICE "Using injected BrotliConfig.cmake")
set(BROTLI_INCLUDE_DIRS "...")
set(BROTLI_LIBRARIES "...")
# Not done in my case but you can use this to create a target
add_library(BROTLI::BROTLI UNKNOWN IMPORTED)
set_target_properties(BROTLI::BROTLI PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${BROTLI_INCLUDE_DIRS}" IMPORTED_LOCATION "...")
endif()
1条答案
按热度按时间mzaanser1#
CMake有多种模式来查找
find_package()
的依赖关系。默认的 module 模式在某些地方查找Find*.cmake
文件,config 模式查找*Config.cmake
文件,到目前为止,我看到的基本上是带有一些自动化的模块变体,因此参数处理是无用的。在我的例子中,我创建了一个目录,并在其中创建了BrotliConfig.cmake
,内容如下:然后告诉CMake使用我的配置,我在命令行上设置:
-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=1
使CMake首先在 config 模式下执行查找-DBrotli_ROOT=/path/to/dir
告诉CMake在哪里找到我们的BrotliConfig.cmake
-DCMAKE_FIND_USE_PACKAGE_ROOT_PATH=1
使CMake使用上面的Brotli_ROOT
设置(默认情况下已启用)我认为所有的
-DPackageName_ROOT=/path/to/...
都可以被一个CMake选项替换,但我不是CMakeMaven,目前的解决方案让我满意。