我想使用ExternalProject_add()来下载/安装依赖关系。它的安装很好,但我无法弄清楚如何在下载后实际链接这些库。CMake - 链接到从ExternalProject_add下载的库()
我想调用刚刚下载的库的target_link_libraries(),但库的路径因系统而异。
如果这是一个系统依赖项,我可以调用find_package() - 但这些包未安装在默认搜索路径中。我不认为你可以在模块模式下为find_package指定一个搜索路径。
这里是我的CMakeLists.txt的片段,不工作:当你使用ExternalProject_Add
ExternalProject_Add(
protobuf
URL http://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
PREFIX ${MYPROJ_SOURCE_DIR}/dependencies
)
find_package(protobuf REQUIRED)
set(LIBS ${LIBS} ${PROTOBUF_LIBRARIES})
target_link_libraries (mybinary ${LIBS})
谢谢,这真的很有帮助。也正因如此,我不会造成混淆,protobuf没有可变的库位置,但R。 – 2011-06-15 12:39:42
CMake提供的前缀和后缀变量平台:' “$ {}安装目录/ lib中/ $ {} CMAKE_SHARED_MODULE_PREFIX $ protobufLib1 {} CMAKE_SHARED_LIBRARY_SUFFIX”' – 2015-04-02 15:48:16
虽然这工作,我认为这是可怕的。如果我必须编写平台条件代码,使用cmake有什么意义?此外,我期望ExternalProject提供一种简单的方法来导入构建的目标,为什么我想要构建一个外部项目,如果以后不能轻松导入它们?重点是什么?我错过了什么吗? – Jens 2016-06-14 03:36:23