在构建源代码之前,如何使用cmake检查某些库是否存在?

时间:2019-02-06 01:27:31

标签: c++ cmake header

通常,开源软件包将使用cmake来检查某些头文件或库是否存在,我希望自己的项目具有相同的功能。

所以我想知道cmake是否提供一些命令来检查当前Linux系统中是否存在某些“ .so” /“。a” /“。h”文件,如果没有,则cmake会给我一些提示安装它们?

cmake如何支持这一点?

3 个答案:

答案 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,您会找到想要的东西。