使用Qt Creator作爲Linux IDE,實現CMake編譯和gdb單步調試

尊重作者,支持原創,如需轉載,請附上原地址:

http://blog.csdn.net/libaineu2004/article/details/78448392

 

一、前期準備

1、安裝Linux系統,例如CentOS 7,帶桌面,GNOME安裝,http://mirror.centos.org/

2、安裝qt-opensource-linux-x64-5.9.1.run,http://download.qt.io/official_releases/qt/

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.cpp
base/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")

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章