我在我的项目中使用CMake,并且希望以不使用cmake的库的形式向其添加依赖项。我希望确保以后可以通过target_link_libraries命令使用该库。也就是说,为了让cmake知道要链接哪个文件,知道该库包含哪个目录。
例如,一些库使用autotools
来构建和安装应用程序,构建过程涉及以下命令集,将库文件安装到$INSTALL
目录中:
$ ./configure --prefix=$INSTALL
$ make -j
$ make install
之后,可以在$INSTALL
目录中找到库文件:$INSTALL/include
中的头(例如,$INSTALL/include/foobar.h
)和$INSTALL/lib
中的库(例如,$INSTALL/lib/foobar.a
)
问题是如何使用cmake来描述第三方库,以便将来可以在项目中轻松使用。
我尝试使用add_custom_target
,但无法获得有效的构建(例如,target_include_directories
无法与自定义目标一起工作)。
1条答案
按热度按时间5uzkadbs1#
如果您希望使用CMake驱动非CMake项目的构建和安装,请使用ExternalProject模块。
至于使用非CMake构建系统构建的目标,你可以通过用
add_library(<name> <type> IMPORTED [GLOBAL])
定义IMPORTED库,然后调用适当的命令来告诉CMake生成的构建系统它们。然后只
target_link_libraries
到IMPORTED目标。您也可以考虑使用非系统包管理器,例如Conan(CMake支持文档)或vcpkg(CMake support docs)。