【问题标题】:cmake cannot find libsndfilecmake 找不到 libsndfile
【发布时间】:2021-07-23 22:49:13
【问题描述】:

Cmake 似乎没有找到 lib libsndfile。但是,它安装在我的机器上。

find_library(sndfile REQUIRED)

并安装:

yum list installed | grep libsnd
libsndfile.x86_64                       1.0.25-11.el7            @base          
libsndfile-devel.x86_64                 1.0.25-11.el7            @base  

错误:

 CMake Error at CMakeLists.txt:65 (find_library):
   Could not find sndfile using the following names:

CMakeLists.txt:

cmake_minimum_required(VERSION 3.19)
project(untitled1)

set(CMAKE_CXX_STANDARD 11)

find_library(sndfile REQUIRED)

add_executable(untitled1 main.cpp)

Main.cpp

#include <iostream>

int main() {
  std::cout << "Hello, World!" << std::endl;
  return 0;
}

【问题讨论】:

  • @drescherjm 完成 :)
  • 您添加了 CMakeLists.txt,但没有发布错误消息的下一行。 Could not find sndfile using the following names:
  • 您忘记在find_library 调用中为您的库指定名称find_library 的第一个参数是 变量 名称,而不是 名称。
  • @Tsyvarev 我现在明白了错误消息。我希望它正在寻找一个名为 libREQUIRED 的库
  • 我还会确保 cmake 具有正确的 CMAKE_STATIC_LIBRARY_SUFFIX 值,后缀 .x86_64 似乎不寻常,Linux 发行版通常具有 .a 扩展名

标签: c++ cmake centos libsndfile


【解决方案1】:

它是否安装在您的机器上并没有多大意义。 CMake 不会在您的所有计算机上搜索该库。您可以做的最好的事情是将已安装库的位置添加到您的 PATH 环境变量中。

以下是 CMake 文档中关于 find_library() HINTSPATHS 参数的说明:

提示,路径

指定除默认目录外要搜索的目录 地点。 ENV var 子选项从系统中读取路径 环境变量。

CMake 还提供了另一种解决方案:设置CMAKE_PREFIX_PATH 您可以在here找到更多详细信息。

【讨论】:

  • 我对 find_library 的调用是错误的。如果我定义:find_library(sndfile libsndfile),它可以工作。谢谢
猜你喜欢
  • 2016-12-12
  • 1970-01-01
  • 2016-01-19
  • 1970-01-01
  • 2016-04-14
  • 2011-08-20
  • 2018-01-20
  • 2023-03-28
  • 2016-10-31
相关资源
最近更新 更多