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

來源:互聯網
上載者:User

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

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")


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.