【问题标题】:How to check if a library (libssh) is installed with Cmake before adding executable如何在添加可执行文件之前检查是否使用 Cmake 安装了库(libssh)
【发布时间】:2021-06-23 02:41:13
【问题描述】:

我在 cmake 中有一个依赖于系统上安装的 libssh 的可执行文件。

我用这个来安装它:

sudo apt-get install -y libssh-dev

这是我的 Cmake:

cmake_minimum_required(VERSION 3.5.0)
project(validateTensor VERSION 0.0.1)

find_package(gflags QUIET)

add_executable(myapplication 
    "myapplication.cpp"
)

target_link_libraries(myapplication gflags teamApplication -lssh)
add_dependencies(myapplication teamApplication)

我的问题是如何在添加可执行文件之前使用 cmake 检查系统上是否安装了 libshh。如果未安装,那么我想从构建中排除可执行文件,但不会导致构建失败。

【问题讨论】:

  • 字面意思是find_library。不要在target_link_libraries中使用-l,直接放库。 target_link_libraries(... ssh).
  • @KamilCuk 谢谢,但我不完全理解。您的意思是使用find_library 检查是否安装了libssh?并将结果存储在一个变量中。但是我是否对target_link_libraries 使用 if 语句?你有时间展示一个例子吗?

标签: cmake


【解决方案1】:

如何在添加可执行文件之前检查库(libssh)是否与 Cmake 一起安装

find_library

find_library(HAVE_SSH NAMES ssh)

add_executable(myapplication 
    myapplication.cpp
)
target_link_libraries(myapplication gflags teamApplication)
if (HAVE_SSH)
   target_link_libraries(myapplication ssh)
endif()
    

不需要add_dependencies(myapplication teamApplication) - target_link_libraries 已经“这样做了”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    相关资源
    最近更新 更多