linux - Qt中的cmake找不到第三方库,而命令行中的cmake可以

标签 linux qt cmake qt5 openscenegraph

我正在使用带有 OpenSceneGraph (OSG-3.4.0) 库的 Qt (5.5.1)。我有一个基本的“HelloWorld”项目,它在 Windows 7 的另一台机器上从 Qt 编译和工作。但是当我尝试在 Linux (Lubuntu-14.04) 上编译同一个项目时,Qt 中的 CMake 找不到 OSG 库。 最奇怪的是,当我从命令行运行 cmake 时,所有库都已找到 - 没问题

这就是我在 CMake 项目文件中搜索库的方式:

# ...
find_package(OpenSceneGraph REQUIRED COMPONENTS osgDB osgGA osgUtil osgViewer)

include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS})
#...

target_link_libraries( ${PROJECT_NAME}
    ${OPENSCENEGRAPH_LIBRARIES}
    )

我还包含了一些Qt库,发现它们没有问题。

当我检查 CMake 在 Qt 中的位置时(在 Manage kits... 菜单中),它显示的路径与我运行 which cmake 时的路径相同一个命令行。所以,cmake 可执行文件是相同的,位于 /usr/bin/。我的 cmake --version 是 2.8.12.2。

我的 .zshrc 包含已安装的 OSG 库的所有路径(如 OSG 安装手册中所述):

export OPENTHREADS_INC_DIR="/usr/local/include"
export OPENTHREADS_LIB_DIR="/usr/local/lib64:/usr/local/lib"
export PATH="$OPENTHREADS_LIB_DIR:$PATH"
export LD_LIBRARY_PATH="/usr/local/lib64:/usr/local/lib:$LD_LIBRARY_PATH"
export OSG_FILE_PATH="/usr/local/OpenSceneGraph/data:/usr/local/OpenSceneGraph/data/Images"

我为我的问题找到了临时解决方案:

  • 首先,我从命令行运行 cmake
  • 然后我将 just build 文件夹的位置提供给 Qt。

这样一切正常。

但是,我想知道问题出在哪里,以便我可以从 Qt 运行 cmake;这几天一直困扰着我,我想不出我的设置有什么问题。任何提示和建议表示赞赏。

UPD:这是我尝试从 Qt 运行 CMake 时收到的错误消息:

-- Could NOT find osgDB (missing:  OSGDB_LIBRARY) 
-- Could NOT find osgGA (missing:  OSGGA_LIBRARY) 
-- Could NOT find osgUtil (missing:  OSGUTIL_LIBRARY) 
-- Could NOT find osgViewer (missing:  OSGVIEWER_LIBRARY) 
-- Could NOT find osg (missing:  OSG_LIBRARY) 
-- Could NOT find OpenThreads (missing:  OPENTHREADS_LIBRARY) 
CMake Error at /usr/share/cmake-2.8/Modules /FindPackageHandleStandardArgs.cmake:108 (message):
Could NOT find OpenSceneGraph (missing: OPENSCENEGRAPH_LIBRARIES
OSGDB_FOUND OSGGA_FOUND OSGUTIL_FOUND OSGVIEWER_FOUND OSG_FOUND
OPENTHREADS_FOUND) (found version "3.4.0")

Call Stack (most recent call first):
/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:315 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-2.8/Modules/FindOpenSceneGraph.cmake:187 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
CMakeLists.txt:19 (find_package)

-- Configuring incomplete, errors occurred!

OSG 库文件安装在:

/usr/local/bin
/usr/local/include
/usr/local/lib64

UPD2:正如user1034749所说,环境变量似乎有问题。当我从命令行启动 QtCreator 时——一切正常;如果我从菜单启动它,则它找不到库。

最佳答案

不幸的是,我找不到如何解决给定设置的问题。我发现我的 Qt 没有正确安装在我的 Linux 机器上。 要解决此问题:我必须从我的 Linux 机器上删除所有 Qt 版本,然后重新安装新的 Qt 版本。

关于linux - Qt中的cmake找不到第三方库,而命令行中的cmake可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33585647/

相关文章:

C++ (Qt),使用内存缓冲区而不是重定向的系统命令

cmake - add_custom_command —通过重建更新依赖项列表

xcode - 我怎样才能让 CMake 创建一个 xcode 项目,在系统头文件中抑制警告?

linux - 如何配置和构建内核以定义 CONFIG_* 并生成 autoconf.h

linux - 使用 sudo 命令时是否应该首先获取文件?

c++ - QbyteArray要 float

c++ - 如何处理 CMake 中的子目录依赖关系?

c++ - 使用 C 在 linux 中设置用户的补充组 ID

linux - 在连接 openstack github 存储库时遇到错误?

c++ - webView QML 中的身份验证