通常,开源软件包将使用cmake来检查某些头文件或库是否存在,我希望自己的项目具有相同的功能。
所以我想知道cmake是否提供一些命令来检查当前Linux系统中是否存在某些“ .so” /“。a” /“。h”文件,如果没有,则cmake会给我一些提示安装它们?
cmake如何支持这一点?
答案 0 :(得分:2)
通常,人们会使用find_package(ABC REQUIRED)
,然后在您的项目中引用它。这将确保已安装依赖库,如果未安装,则cmake将失败。
您可以找到很多有关如何在cmake安装中工作的示例,例如C:\Program Files\CMake\share\cmake-3.13\Modules\FindZLIB.cmake
将通过在文件系统中查找将安装该库的常规位置来搜索zlib库,如果找到该库,则会进行设置这些变量相应地:
# ZLIB_INCLUDE_DIRS - where to find zlib.h, etc.
# ZLIB_LIBRARIES - List of libraries when using zlib.
# ZLIB_FOUND - True if zlib found.
要实现此目的,可以使用cmake命令find_path
找到头文件,并使用find_library
找到库(静态和共享)。
答案 1 :(得分:1)
要搜索任意库,可以使用find_library()命令。标头的相同任务由find_file()完成。您也可以使用find_program()
搜索可执行文件。
正如@Damian在他的讲话中所说,许多库都提供“ config”文件,例如FindBoost.cmake
。可以通过调用find_package(Boost)
命令来找到此类库。该命令将查找并加载配置文件并设置相应的变量。
答案 2 :(得分:0)
您需要提供-config.cmake文件来告诉其他项目您的库和标头在哪里。 Here,您会找到想要的东西。