【发布时间】:2016-02-08 17:06:48
【问题描述】:
我将 Qt (5.5.1) 与 OpenSceneGraph (OSG-3.4.0) 库一起使用。我有一个基本的“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库,发现没有问题。
当我在 Qt 中检查 CMake 的位置时(在 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; - 然后我给 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 时——一切正常;如果我从菜单启动它,那么它找不到库。
【问题讨论】:
-
如果
cmake在命令行下工作,但在你的IDE(Qt创建者?)下工作,然后环境变量有问题,尝试从命令行运行Qt创建者 -
需要更多信息: 1. 错误信息,当 CMake 找不到包时(它会显示究竟找不到什么)。 2. 包裹的实际放置位置。
-
对不起,我忘记显示错误了,现在更新了。
-
致 user1034749:显然,我无法从命令行运行 qtcreator!它不是xonfigured。我现在正在尝试修复它,看看如果从命令行运行它会如何表现。谢谢你的建议。
-
您的
.zshrc文件似乎包含路径定义(/usr/local/lib64),它允许找到与OSG相关的库、OpenThreads和OpenSceneGraph(内部带有find_library对应find_package())。由于某种原因,Qt 不使用您的定义文件。为了使 Qt 正常工作,您可以通过CMAKE_LIBRARY_PATH=/usr/local/lib64对其 CMake 的定义。
标签: linux qt cmake qt5 openscenegraph