我有一个C++库项目,它附带一个examples
文件夹。这些例子是独立的,即它们可以在没有源码树的其余部分的情况下编译,就好像它们是使用该库的真实应用程序一样。他们使用提供的FindMyLib.cmake
在系统中查找已安装的库。是否可以将cmake项目链接到子项目?
我想也能够与整个图书馆一起构建它们。起初,我加入他们作为子目录:
if(MYLIB_BUILD_EXAMPLES)
add_subdirectory(examples/fooexample)
add_subdirectory(examples/barexample)
endif()
但是,这是行不通的,因为我不能用find_package
安装库之前。我可以将默认构建目录添加到搜索路径中,但这还不够,因为在cmake运行时显然没有构建库。
我能做些什么来解决这个问题?有没有一种方法可以在构建库时透明地将库链接到这些子项目(还可以“禁用”find_package,因为它必然会在没有安装的情况下失败)。
除非我错过了什么,这是不行的:为例子的配置步骤会导致一个错误,因为该库将不会被尚未建成, – piwi
如果库中添加(用'add_library(MyLib中)' )*之前*'add_subdirectory(examples/...)',然后'target_link_libraries(fooexample $ {MyLib_LIBRARY})'像往常一样与** target **链接。图书馆目标不需要在这个阶段建立。 – Tsyvarev
我的不好,谢谢澄清。 – piwi