如何查找已编译的包

时间:2018-01-27 22:45:07

标签: c++ linux cmake exiv2

首先,我正在使用Centos 7 我正在尝试编译最新的暗表,我已经克服了一些问题,包括编译gphoto2,exiv2等。

但是现在当我尝试使用基本指令构建darktable时: https://github.com/darktable-org/darktable

  

mkdir build/ cd build/ cmake -DCMAKE_INSTALL_PREFIX=/opt/darktable/ .. make sudo make install

虽然我多次尝试使用cmake,但我必须解决一些依赖性问题,但我坚持使用的是。

Centos7附带Exiv2版本0.23,Darktable需要最低版本0.24

我用dnf删除了exiv2 0.23,然后成功编译并安装exiv2从源码到版本0.26。

经过几次尝试后,我使用 - 前缀= / usr 配置了exiv2,因为黑暗表示他找不到这些库。

现在我仍然遇到同样的问题 和cmake退出时出现以下错误:

  

CMake Error at cmake/modules/FindExiv2.cmake:46 (message): Exiv2 version check failed. Version was found, at least version 0.24 is required Call Stack (most recent call first): src/CMakeLists.txt:292 (find_package) -- Configuring incomplete, errors occurred! See also "/opt/darktable-2.4.1/build/CMakeFiles/CMakeOutput.log". See also "/opt/darktable-2.4.1/build/CMakeFiles/CMakeError.log".

我对cmake的了解几乎没有,但我看到src / CMakeLists.txt第292行搜索了一个不再存在的包,因为我已经用dnf将其删除了。

  

# Require exiv2 >= 0.24 to make sure everything we need is available find_package(Exiv2 0.24 REQUIRED) include_directories(SYSTEM ${Exiv2_INCLUDE_DIRS}) list(APPEND LIBS ${Exiv2_LIBRARIES}) add_definitions(${Exiv2_DEFINITIONS})

但是我怎么能让cmake找到我构建和安装的exiv2? 找到它需要的所有库?

找到了解决方案!

我意识到在/ usr / lib64 / pkgconfig / usr / local / lib / pkgconfig以及其他一些 *。pc 文件中。

在我编译和安装Exiv2之后,它将 exiv2.pc 放在/ usr / lib / pkgconfig /下。它是那里唯一的文件。

所以我在/ usr / lib64 / pkgconfig中为exiv2.pc文件建立了一个软链接 它完成了这项工作,刚刚又出现了另一个问题清单。

1 个答案:

答案 0 :(得分:1)

该CMake行在Exiv2_INCLUDE_DIRS和库文件Exiv2_LIBRARIES中查找头文件。尝试在CMake命令中设置这些变量:

cmake [...] -DExiv2_INCLUDE_DIRS=/usr/include -DExiv2_LIBRARIES=/usr/lib

(也许后者需要是库文件本身,而不是它的目录,我不知道。)

[...]将替换为您已经拥有的任何参数。)

相关问题