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]。
相關資料
本文对您有帮助?分享给更多朋友!
反馈与讨论
发现文档不全面、有错误却没时间编辑文档?想分享自己的经验或见解?欢迎在此留言、讨论。