導航:首頁 > 程序命令 > cmake命令行

cmake命令行

發布時間:2022-03-01 00:34:12

① 如何才能使CMake生成的可執行程序便於調試

出現的原因是導入的此makefile工程不是debug模式的,所以不包含調試信息,自然不能打斷點調試了。因此,要解決這個問題就要考慮如何修改CMakeLists.txt使其生成的makefile文件進而生成Debug模式下的帶調試信息的可執行程序;
我們先寫一個簡單的測試例子來測試一下,如何加調試信息:
假設文件結構如下:

./test6
|
+ ------ CmakeLists.txt
+ ------ main.cpp

+ ------ src_a
|
+ ------ CmakeLists.txt
+ ------ Testa.h
+ ------ Testa.cpp

+ ------ src_so
|
+ ------ CmakeLists.txt
+ ------ Testso.h
+ ------ Testso.cpp

第一步:test6目錄下CmakeLists.txt

cmake_minimum_required(VERSION 3.3)

project(main )

add_subdirectory(src_a ) // 給當前工程目錄添加子目錄 src_a
add_subdirectory(src_so ) // 給當前工程目錄添加子目錄 src_so

set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb") //添加調試信息

set(EXECUTABLE_OUTPUT_PATH $ {PROJECT_SOURCE_DIR}/bin) //設置可執行文件的生成路徑

include_directories($ {PROJECT_SOURCE_DIR}/src_a ${PROJECT_SOURCE_DIR}/src_so) //包含庫頭文件

aux_source_directory(. DIR_SRCS ) // 將當前目錄中的源文件名稱賦值給變數 DIR_SRCS
add_executable(main $ {DIR_SRCS}) //表示 DIR_SRCS中的源文件需要編譯成名為 main的可執行文件

target_link_libraries (main Testa Testso) //將庫文件鏈接到生成的目標可執行文件

第二步:子目錄目錄下CmakeLists.txt
1,src_a中靜態庫的編譯生成

cmake_minimum_required(VERSION 3.3) //該命令限定了 CMake 的版本

set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb") //添加調試信息

set(LIBRARY_OUTPUT_PATH $ {PROJECT_SOURCE_DIR}/bin) //設置Lib 靜態庫生成路徑

aux_source_directory(. LIBA_SRC) //將當前目錄中的源文件名稱賦值給變數 LIBA_SRC
add_library(Testad STATIC $ {LIBA_SRC}) //將變數 LIBA_SRC中的源文件編譯為靜態庫,庫文件名稱為 Testa

2,src_so中動態庫的編譯生成

cmake_minimum_required(VERSION 3.3) //該命令限定了 CMake 的版本

set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb") //添加調試信息

set(LIBRARY_OUTPUT_PATH $ {PROJECT_SOURCE_DIR}/bin) //設置Lib 動態庫庫生成路徑

aux_source_directory(. LIBSO_SRC) //將當前目錄中的源文件名稱賦值給變數 LIBA_SRC
add_library(Testsod SHARED $ {LIBSO_SRC}) //將變數 LIBA_SRC中的源文件編譯為動態庫,庫文件名稱為 Testso

此處執行cmake時有兩種方式:

1,在cmake的gui界面中設定生成Debug模式,
2,在執行cmake時使用如下命令:cmake -DCMAKE_BUILD_TYPE=Debug/Release path

關於ccmake的使用,這里簡單的做個說明:
1.首先在終端啟動cmake的gui界面:"ccmake ." 效果如圖:

2.然後在gui中輸入"c",效果如圖:

3.然後在gui中輸入"e",效果如圖:

4.此時在gui界面點擊"enter"回車鍵進行編輯:編輯完再次點擊回車退出編輯。

5.點擊"c",之後再次點擊"g"。此時makefile文件已經生成好了。make之後生成的可執行文件是帶有調試信息的,就可用gdb進行調試了(導入Eclipse也可以進行打斷點調試)。

② cmake中target_link_libraries()使用問題動態庫使用絕對路徑沒問題,但是使用相對路徑就矬了

使用相對路徑的時候,你要讓cmake能夠搜索到找到你動態庫,就像直接使用gcc/g++來鏈接的時候一樣,要使用-L來指定第三方庫所在路徑。cmake可以使用 LINK_DIRECTORIES 命令來指定第三方庫所在路徑,比如,你的動態庫在/home/myproject/libs這個路徑下,則通過命令:LINK_DIRECTORIES(/home/myproject/libs),把該路徑添加到第三方庫搜索路徑中,這樣就可以使用相對路徑了,使用TARGET_LINK_LIBRARIES的時候,只需要給出動態鏈接庫的名字就行了。

拓展:

1、CMake是一個跨平台的安裝(編譯)工具,可以用簡單的語句來描述所有平台的安裝(編譯過程)。他能夠輸出各種各樣的makefile或者project文件,能測試編譯器所支持的C++特性,類似UNIX下的automake。

2、只是 CMake 的組態檔取名為 CMakeLists.txt。Cmake 並不直接建構出最終的軟體,而是產生標準的建構檔(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然後再依一般的建構方式使用。這使得熟悉某個集成開發環境(IDE)的開發者可以用標準的方式建構他的軟體,這種可以使用各平台的原生建構系統的能力是 CMake 和 SCons 等其他類似系統的區別之處。

③ CMake,configue出錯,以下是錯誤信息。怎麼弄 vs2010的。

CMake,configue出錯,彈出框「Error in configuration process,project files may be invalid」是設置錯誤造成的,解決方法如下:

1、首先編寫如下所示的main.cpp。

linux下面cmake命令意義cmake -D CMAKE_BUILD_TYPE=RELEASE

"怎麼知道在源代碼目錄中編譯的呢?" 這個是因為後邊的那 .. 的緣故, .. 表示上層目錄. 那.. 就是<path to the OpenCV source directory>

-D 相當於就是定義, -D 可以理解為告訴cmake 後邊我要定義一些參數了, 你每定義一個就在前邊加上-D就是了
CMAKE_BUILD_TYPE 這種東西往往是在CMakeList.txt 中定義的, 這個是你要編譯的類型, 一般的選擇有debug,release, 但是不確定

CMAKE_INSTALL_PREFIX 這個是安裝路徑.

⑤ 【CMAKE】求助-cmake 請問誰知道CMAKE如何使用真正的初學者,win7系統,使用VS2005

這是在bash(或win下的mingw什麼的)命令行上敲的命令...

⑥ make如何指定cmake路徑

先在cmakelist.txt所在目錄執行cmake,而後再make

⑦ make makefile cmake qmake都是什麼,有什麼區別

你好

希望對你有幫助

⑧ cmake 在Windows 命令行怎麼指定編譯器

比如: D:\temp>cmake CmakeList.txt -G "Visual Studio 8 2005"

⑨ cmake 在Windows 命令行怎麼指定編譯器

CMake是一個比make更高級的編譯配置工具,它可以根據不同平台、不同的編譯器,生成相應的Makefile或者vcproj項目。
通過編寫CMakeLists.txt,可以控制生成的Makefile,從而控制編譯過程。CMake自動生成的Makefile不僅可以通過make命令構建項目生成目標文件,還支持安裝(make install)、測試安裝的程序是否能正確執行(make test,或者ctest)、生成當前平台的安裝包(make package)、生成源碼包(make package_source)、產生Dashboard顯示數據並上傳等高級功能,只要在CMakeLists.txt中簡單配置,就可以完成很多復雜的功能,包括寫測試用例。
如果有嵌套目錄,子目錄下可以有自己的CMakeLists.txt。
總之,CMake是一個非常強大的編譯自動配置工具,支持各種平台,KDE也是用它編譯的,感興趣的可以試用一下。

准備活動:
(1)安裝cmake。
下載地址:http://www.cmake.org/cmake/resources/software.html
根據自己的需要下載相應的包即可,Windows下可以下載zip壓縮的綠色版本,還可以下載源代碼。
Windows下CMake的使用
(2)運行cmake的方法。(GUI、命令行)
http://www.cmake.org/cmake/help/runningcmake.html

CMake使用步驟:
運行GUI的cmake界面:
cmake-2.8.1-win32-x86\bin\cmake-gui.exe
Windows下CMake的使用
執行Configure:
運行之後,生成了如下文件:
Windows下CMake的使用
生成Makefile:
執行Generate之後生成如下文件:
Windows下CMake的使用
運行make進行編譯:
Windows下CMake的使用
編譯完成後,在build目錄生成Tutorial.exe,運行Tutorial.exe 25就可以看到運行結果:
Windows下CMake的使用
運行make install安裝程序:
Windows下CMake的使用
運行make test進行測試:
Windows下CMake的使用

通過cmake tutorial學習CMake配置方法
http://www.cmake.org/cmake/help/cmake_tutorial.html
可以在源代碼的Tests/Turorial目錄中找到這個手冊對應的代碼。
Windows下CMake的使用
1、Step1。
(如果不知道如何使用cmake,以及如何使用編譯產生的Turorial.exe,可先看下前面「CMake使用步驟」的說明,它以Step4為例詳細介紹了使用過程,Step1的配置可能不夠完全,比如無法運行make install,無法運行make test,但可以參考。)
簡單的程序編譯。
(1)運行GUI的cmake,指定要編譯的源代碼路徑和二進制文件路徑(會自動創建)。
Windows下CMake的使用
(2)點擊Configure,配置成功後,再點擊Generate。
配置需要選擇合適的編譯器,雖然我安裝了VC2008,但沒有配置成功;選擇Unix Makefiles,配置成功,它自動找到了DevC++下的gcc.exe等編譯器。
Windows下CMake的使用
(3)在build3目錄執行make,就能夠編譯生成Turorial.exe了。
D:\Projects\Lab\testngpp\cmake-2.8.1\Tests\Tutorial\Step1\build3>make
Linking CXX executable Tutorial.exe
[100%] Built target Tutorial
可以運行一下Turorial.exe:
D:\Projects\Lab\testngpp\cmake-2.8.1\Tests\Tutorial\Step1\build3>Tutorial.exe
Tutorial.exe Version 1.0
Usage: Tutorial.exe number
D:\Projects\Lab\testngpp\cmake-2.8.1\Tests\Tutorial\Step1\build3>Tutorial.exe 4
The square root of 4 is 2
2、Step2
把子目錄編譯為庫,並且鏈接到最終的可執行文件。
include_directories ("${PROJECT_SOURCE_DIR}/MathFunctions")
add_subdirectory (MathFunctions) # 使得子目錄MathFunctions也能被編譯

# add the executable
add_executable (Tutorial tutorial.cxx)
target_link_libraries (Tutorial MathFunctions)
產生makefile:
在GUI上點擊Configure,之後Generate還是灰色,再次點擊Configure,Generate就可以點擊了。
編譯:

閱讀全文

與cmake命令行相關的資料

熱點內容
中級會計教材pdf 瀏覽:475
弱簽名演算法md5 瀏覽:358
進行系統硬體設置的文件夾是 瀏覽:750
dwrg什麼文件夾 瀏覽:669
小米電視如何加密wifi 瀏覽:337
java私鑰解密 瀏覽:947
犯過罪還能當程序員嗎 瀏覽:975
參數名稱java 瀏覽:11
android序列化文件 瀏覽:249
java泛型for 瀏覽:29
html保存pdf 瀏覽:211
單片機畢業論文摘要 瀏覽:666
安卓機如何關閉閃付 瀏覽:518
pdf標注app 瀏覽:484
編譯原理的前端和後端的意義 瀏覽:395
德陽程序員招聘 瀏覽:801
javaascii轉中文 瀏覽:889
酷狗app在哪裡點自己唱 瀏覽:202
ios15輕量版app怎麼刪除 瀏覽:564
dos下載命令行 瀏覽:749