尊重作者,支援原創,如需轉載,請附上原地址:
http://blog.csdn.net/libaineu2004/article/details/78448392
一、前期準備
1、安裝Linux系統,例如CentOS 7,帶案頭,GNOME安裝
2、安裝qt-opensource-linux-x64-5.9.1.run
3、安裝CMake,參考教程:CentOS 7安裝cmake 2.8.12.2
二、建立C/C++工程,選擇“與Qt庫無關”的工程
Bulid system請選擇CMake
建立工程完畢,會在路徑下產生CMakeLists.txt檔案。下次需要開啟工程時,qtcreator菜單開啟檔案/工程,選擇CMakeLists.txt檔案即可。
三、如何?單步調試
方法1(推薦):工程預設的構建方式是Default,也就是release的意思。需要調整為Debug才能實現單步斷點調試。
勾選完成Debug之後,請在菜單->Build點擊選項“Run CMake”即可。
方法2(不推薦):由於CMake預設產生的是Default/release版本。我們可以手動編輯CMakeLists.txt檔案,在檔案的最後添加:
set(CMAKE_BUILD_TYPE Debug),再次構建即可。
四、如何添加C++/C源檔案和標頭檔。又如何添加第三方依賴庫庫和標頭檔。
唯一的方式就是手動修改CMakeLists.txt檔案,詳情見
CMake使用樣本與整理總結
CMake處理多源檔案目錄的方法 請關注多檔案的添加方法aux_source_directory
多目錄工程的CMakeLists.txt編寫(自動添加多目錄下的檔案) 請關注多檔案的添加方法aux_source_directory
舉例1:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -g -Wall -O0 -Wno-unused-variable -pthread")link_directories( ${PROJECT_SOURCE_DIR}/lib/usr/lib64/mysql/)find_library(MYSQL_LIB libmysqlclient.so /usr/lib64/mysql/)IF (NOT MYSQL_LIB) MESSAGE(FATAL_ERROR "mysqlclient not found")ENDIF(NOT MYSQL_LIB)set(net_srcs base/timestamp.cppbase/countdownlatch.cpp)
舉例2:
set(SRC_LIST main.c hello.c)
add_executable(hello ${SRC_LIST})
這樣寫set當然沒什麼問題,但是如果源檔案很多,把所有源檔案的名字都加進去將是一件煩人的工作。更省事的方法是使用 aux_source_directory 命令,該命令會尋找指定目錄下的所有源檔案,然後將結果存進指定變數名。其文法如下:aux_source_directory(<dir> <variable>)
aux_source_directory(. DIRSRCS)
add_executable(hello ${DIRSRCS})
學習CMake請參考《CMake Practice》這篇文章,旨在指導使用者快速使用CMake,如果需要更詳細的內容,請通讀《CMake Practice》這篇文章。下載路徑:http://sewm.pku.edu.cn/src/paradise/reference/CMake%20Practice.pdf
五、如何?遠端偵錯
請訪問姊妹篇《使用Qt Creator作為Linux IDE,代替Vim:實現兩台Linux電腦遠程部署和調試(一台電腦有案頭系統,一台電腦無案頭系統)》,網址是:http://blog.csdn.net/libaineu2004/article/details/62423830
注意:CMake遠程產生的目標路徑,預設是/root/xxx。可以手動修改CMakeLists.txt檔案更改輸出路徑,SET(EXECUTABLE_OUTPUT_PATH "***").如此一來開發機和目標機的路徑都會有產生結果。我的實測結果是,貌似路徑裡面有home目錄,目標機就不行。例如SET(EXECUTABLE_OUTPUT_PATH "/home/12/"),結果檔案開發機在,但是目標機並不在,而是會在根目錄產生/12的檔案夾。再比如"/home/firecat/test"目標機也不在,而是根目錄下產生"test"檔案夾。
cmake_minimum_required(VERSION 2.8)project(untitled)add_executable(${PROJECT_NAME} "main.cpp" "test.cpp")##SET(EXECUTABLE_OUTPUT_PATH "/home/firecat/test/")SET(EXECUTABLE_OUTPUT_PATH "/hellotest/12/34")