Qt中的cmake无法找到第三方库,而命令行中的cmake可以

时间:2015-11-07 17:30:24

标签: linux qt cmake qt5 openscenegraph

我正在使用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的位置时(在管理工具包... 菜单中),它显示的路径与从命令行运行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时 - 一切正常;如果我从菜单中启动它,那么它就找不到库。

1 个答案:

答案 0 :(得分:1)

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