2012-10-15 37 views
4

我试图编译我的Qt程序与cmake的,但我有一个arror:qplatformdefs.h通过CMake

qzip.cpp:57:27:致命错误:qplatformdefs.h :没有这样的文件或目录

我在增加这些线路的CMakeLists.txt但它没有工作:

IF(AND QT_LIBRARY_DIR不QT_MKSPECS_DIR OR QT_QMAKE_CHANGED)

的exec_program($ {} QT_QMAKE_EXECUTABLE

ARGS "-query QMAKE_MKSPECS" 

OUTPUT_VARIABLE qt_mkspecs_dirs) 

#不更换:在Windows上,因为它可能是一个驱动器盘符

#和窗户应该已经使用;作为隔板

IF(UNIX)

STRING(REPLACE ":" ";" qt_mkspecs_dirs "${qt_mkspecs_dirs}") 

ENDIF(UNIX)

SET(QT_MKSPECS_DIR NOTFOUND)

FIND_PATH(QT_MKSPECS_DIR qconfig.pri PATHS $ {qt_mkspecs_dirs}

DOC "The location of the Qt mkspecs containing qconfig.pri" 

NO_DEFAULT_PATH) 

ENDIF(QT_LIBRARY_DIR AND NOT QT_MKSPECS_DIR或QT_QMAKE_CHANGED)

SET(QT_INCLUDES $ {QT_QT_INCLUDE_DIR} $ {QT_MKSPECS_DIR} /默认$ {QT_INCLUDE_DIR})

所以,我怎么可以添加链接到qplatformdefs.h在我的CMakeLists.cpp?

非常感谢。

PS:我在Ubuntu 12.04 32位

回答

1

您可能已经找到了答案,但如果你还没有发现它这里是东西:

在我的Fedora,该文件位于/usr/lib64/qt4/mkspecs/linux-g ++ - 64。 假设它在Ubuntu中的位置相同,则应该将此dir添加到include_directories();

include_directories(lots_of_dirs "/usr/lib64/qt4/mkspecs/linux-g++-64/") 

我希望我能帮上忙。

+0

这似乎有点脆弱的解决方案。如果代码在另一个平台上签出,它会不会破坏?有什么方法让Qt告诉CMake这个文件在哪里? – Alex

2

您可以尝试将此添加到您的CMakeLists。txt:

include_directories(${QT_MKSPECS_DIR}/default)