CMake编译Qt程序
此页由Linux Wiki用户Chenxing于2012年3月31日 (星期六) 17:42的最后更改。
出自Linux Wiki
提示:此文已超过 12 年(4650 天)未更新,如发现内容过时或有误,欢迎改进:)
CMake的跨平台和库自动搜寻特性使其成为Linux环境中开发程序的不错选择。即便使用Qt时,如果同时依赖其它库,CMake也会显得比QMake更为灵活。
编写Qt程序的CMakeLists.txt的流程与qmake的pro文件大体相似,主要把cpp文件、头文件、ui文件和资源文件列出即可。
下面给出一例,说明包含在注释中:
project(qtTst) cmake_minimum_required(VERSION 2.6) find_package(Qt4 REQUIRED) # 包含文件夹:${CMAKE_CURRENT_BINARY_DIR}和${CMAKE_CURRENT_SOURCE_DIR}用于确保moc产生的文件能正确编译。 include_directories(${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) set(qtTst_SOURCES main.cpp mywindow.cpp) # 对于含有Q_OBJECT一类宏的代码(主要是头文件),需要列出以备交给moc处理 set(qtTst_HDRS myexample.h mywindow.h) # UI文件 set(qtTst_UI mywindow.ui) # 资源文件,如果有的话 set(qtTst_RESOURCES images.qrc) # qt4_automoc有时不能正常工作,建议使用下面的qt4_wrap_cpp # qt4_automoc(${CPP_SOURCES}) # 注意虽然这个命令叫wrap cpp,但实际一般处理的是含有Q_OBJECT代码的头文件 qt4_wrap_cpp(qtTst_MOC ${QOBJ_HDRS}) # .ui文件需要由uic处理 qt4_wrap_ui(qtTst_UIC ${qtTst_UI}) qt4_add_resources(qtTst_RCC ${qtTst_RESOURCES}) add_executable(myapp ${qtTst_SOURCES} ${qtTst_UIC} ${qtTst_MOC} ${qtTst_UIC} ${qtTst_RCC}) # 指明链接QtCore和QtGUI target_link_libraries(myapp ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY}) # 或者使用下面更灵活的方法: # INCLUDE(${QT_USE_FILE}) # ADD_DEFINITIONS(${QT_DEFINITIONS}) # 设置用到的可选Qt库: # SET(QT_USE_QTOPENGL TRUE) # target_link_libraries(myapp ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY})
更多信息,可以参考[1]和Qt Developer Network文章[2]。
对于一些特殊的情况,如在.cpp文件中使用Q_OBJECT宏等,可以参考这篇中文文章[3]。
相关资料
本文对您有帮助?分享给更多朋友!
反馈与讨论
发现文档不全面、有错误却没时间编辑文档?想分享自己的经验或见解?欢迎在此留言、讨论。