我正在纠结如何在我的 cmake 项目中包含第三方库。目前我构建了 Poco 和一堆其他人,它们都生成了我与 find_package 一起使用的各自的 Config.cmake。我有一个包装构建脚本,它构建我的所有依赖项并将它们分别打包以进行调试和发布(我不想调整它们的 cmake 脚本,除非我真的真的需要因为维护)。
我以为我可以这样做:
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}\"")
Run Code Online (Sandbox Code Playgroud)
这产生: 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"
似乎缓存了目标 Foo 对 find_package 的第一次调用,这不是我真正想要的。
我会以错误的方式解决这个问题吗?如何通过 Visual Studio 生成器正确使用第三方库?
任何指针都非常感谢。
我正在使用markdown编写文档,我使用pandoc将其导出为PDF.在文档的最后,我需要在PDF的打印副本上留出签名空间.
我试图找到如何绘制一个固定宽度的线,但到目前为止我只能逃避下划线字符,这感觉不太正确.就好像我错过了一些东西,这可能不是那么不寻常.
非常感谢任何帮助或指示.