我正在撕掉我的头发,关于如何在我的cmake项目中包含第三方库。目前,我构建了Poco和其他一些产生它们各自的Config.cmake的函数,这些函数与find_package一起使用。我有一个包装构建脚本,它构建了所有的依赖关系,并将它们分别打包以进行调试和发布(我不想调整它们的cmake脚本,除非我确实真的需要,因为维护)。find_package同时用Visual Studio进行调试和发布
我想我可能只是做:
find_package(Foo
HINTS "${CMAKE_SOURCE_DIR}/some/path/debug/libFoo/lib/cmake"
REQUIRED
)
get_target_property(LIB_FOO_DEBUG lib_foo LOCATION)
find_package(Foo
HINTS "${CMAKE_SOURCE_DIR}/some/path/release/libFoo/lib/cmake"
REQUIRED
)
get_target_property(LIB_FOO_RELEASE lib_foo LOCATION)
set(LIB_FOO_LIBRARIES optimized "${LIB_FOO_RELEASE}" debug "${LIB_FOO_DEBUG}")
message("LIB_FOO_LIBRARIES: \"${LIB_FOO_LIBRARIES}\"")
这yeilds:LIB_FOO_LIBRARIES: "optimized;C:/path/to/proj/some/path/debug/libFoo/lib/foo.lib;debug;C:/path/to/proj/some/path/debug/libFoo/lib/foo.lib"
这似乎是第一次调用find_package为目标美孚缓存,WHIS我真的不希望。
我该怎么做呢?如何正确使用Visual Studio生成器来处理第三方库?
任何指针,非常感谢。
我目前使用你的答案的第二个选择,这是做这项工作(尽管它感觉有点哈克)。你有建议如何正确生成一个multiconfig * Config.cmake?如果没有太多的工作,我可能会走这条路,并向有问题的图书馆提交一个拉请求。 – JBarberU
我发现这个[package-example](https://github.com/forexample/package-example)。它的'Foo'包可以用作包导出的例子,它正确地适用于多图。 – Tsyvarev