當前位置:首頁 » 編程軟體 » cmake編譯參數

cmake編譯參數

發布時間: 2022-09-11 22:07:55

㈠ cmake mysql時怎麼去查看所需要添加編譯的參數

cmake . -LH 「.」表示編譯當前目錄,-LH編譯完後列印出選項

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 這個是安裝路徑.

㈢ linux 源碼安裝 cmake 時 可選的參數有哪些

/configure就是執行你當前目錄下一個名叫configure的腳本,由它生成Makefile,有了Makefile之後,一般來說就可以通過make進行編譯,make install進行安裝
cmake就是一個與make同級別的編譯工具,只不過它依靠的不是Makefile作為編譯規則,而是根據CMakeLists.txt來編譯的。

㈣ cmake中怎樣設置gcc的編譯參數

在configure的時候,加上–host=arm-linux,結果沒有實現我們要的效果,沒有將編譯器從默認的 gcc改成arm-linux-gcc,編譯器還是用的默認的gcc: [crifan@localhost lrzsz-0.12.20]$ CFLAGS=-O2

㈤ cmake 後面那些參數該怎麼寫

在工程搭建時,可能會有將靜態庫鏈接成動態庫的需求,如出於代碼保護的角度,某些模塊會發布.a擴展名的靜態庫,我們要將多個這樣的靜態庫鏈接成一個動態庫。但與直接link目標文件不同的是,ld以默認參數執行時,並把靜態庫中沒有用到的函數過濾掉,導致生成的so並未包含所要的函數,因此要加上--whole-archive參數,以保證所有的函數都包含在生成的so中。 在使用cmake時,CMakeLists.txt的寫法如下:add_library( ${MODULE_NAME} SHARED ${CMAKE_SOURCE_DIR}/builttime.c #要生成一個so,至少要包含一個源文件,實在沒有可以把庫的編譯時間戳打到這兒。)target_link_libraries( ${MODULE_NAME} ${${MODULE_NAME}_EXTRA_LDFLAGS} "-Wl,--whole-archive" #告訴編譯器,從這里開始,所有的庫的內容都包含到so中 ${LOCAL_MODULES} #可以是以源代碼生成的靜態庫 ${PREBUILT_MODULES} #可以是預先生成的靜態庫 "-Wl,--no-whole-archive" #告訴編譯器,從這里開始,以後的庫的內容不用都包含到so中)

㈥ 如何使用CMake進行交叉編譯

cmake交叉編譯配置

很多時候,我們在開發的時候是面對嵌入式平台,因此由於資源的限制需要用到相關的交叉編譯。即在你host宿主機上要生成target目標機的程序。裡面牽扯到相關頭文件的切換和編譯器的選擇以及環境變數的改變等,我今天僅僅簡單介紹下相關CMake在面對交叉編譯的時候,需要做的一些准備工作。

CMake給交叉編譯預留了一個很好的變數CMAKE_TOOLCHAIN_FILE,它定義了一個文件的路徑,這個文件即toolChain,裡面set了一系列你需要改變的變數和屬性,包括C_COMPILER,CXX_COMPILER,如果用Qt的話需要更改QT_QMAKE_EXECUTABLE以及如果用BOOST的話需要更改的BOOST_ROOT(具體查看相關Findxxx.cmake裡面指定的路徑)。CMake為了不讓用戶每次交叉編譯都要重新輸入這些命令,因此它帶來toolChain機制,簡而言之就是一個cmake腳本,內嵌了你需要改變以及需要set的所有交叉環境的設置。

toolChain腳本中設置的幾個重要變數

1.CMAKE_SYSTEM_NAME:

即你目標機target所在的操作系統名稱,比如ARM或者Linux你就需要寫"Linux",如果Windows平台你就寫"Windows",如果你的嵌入式平台沒有相關OS你即需要寫成"Generic",只有當CMAKE_SYSTEM_NAME這個變數被設置了,CMake才認為此時正在交叉編譯,它會額外設置一個變數CMAKE_CROSSCOMPILING為TRUE.

2. CMAKE_C_COMPILER:

顧名思義,即C語言編譯器,這里可以將變數設置成完整路徑或者文件名,設置成完整路徑有一個好處就是CMake會去這個路徑下去尋找編譯相關的其他工具比如linker,binutils等,如果你寫的文件名帶有arm-elf等等前綴,CMake會識別到並且去尋找相關的交叉編譯器。

3. CMAKE_CXX_COMPILER:

同上,此時代表的是C++編譯器。

4. CMAKE_FIND_ROOT_PATH:

指定了一個或者多個優先於其他搜索路徑的搜索路徑。比如你設置了/opt/arm/,所有的Find_xxx.cmake都會優先根據這個路徑下的/usr/lib,/lib等進行查找,然後才會去你自己的/usr/lib和/lib進行查找,如果你有一些庫是不被包含在/opt/arm裡面的,你也可以顯示指定多個值給CMAKE_FIND_ROOT_PATH,比如

set(CMAKE_FIND_ROOT_PATH /opt/arm /opt/inst)

該變數能夠有效地重新定位在給定位置下進行搜索的根路徑。該變數默認為空。當使用交叉編譯時,該變數十分有用:用該變數指向目標環境的根目錄,然後CMake將會在那裡查找。

5. CMAKE_FIND_ROOT_PATH_MODE_PROGRAM:

對FIND_PROGRAM()起作用,有三種取值,NEVER,ONLY,BOTH,第一個表示不在你CMAKE_FIND_ROOT_PATH下進行查找,第二個表示只在這個路徑下查找,第三個表示先查找這個路徑,再查找全局路徑,對於這個變數來說,一般都是調用宿主機的程序,所以一般都設置成NEVER

6. CMAKE_FIND_ROOT_PATH_MODE_LIBRARY:

對FIND_LIBRARY()起作用,表示在鏈接的時候的庫的相關選項,因此這里需要設置成ONLY來保證我們的庫是在交叉環境中找的.

7. CMAKE_FIND_ROOT_PATH_MODE_INCLUDE:

對FIND_PATH()和FIND_FILE()起作用,一般來說也是ONLY,如果你想改變,一般也是在相關的FIND命令中增加option來改變局部設置,有NO_CMAKE_FIND_ROOT_PATH,ONLY_CMAKE_FIND_ROOT_PATH,BOTH_CMAKE_FIND_ROOT_PATH

8. BOOST_ROOT:

對於需要boost庫的用戶來說,相關的boost庫路徑配置也需要設置,因此這里的路徑即ARM下的boost路徑,裡面有include和lib。

9. QT_QMAKE_EXECUTABLE:

對於Qt用戶來說,需要更改相關的qmake命令切換成嵌入式版本,因此這里需要指定成相應的qmake路徑(指定到qmake本身)

toolChain demo

# this is required
SET(CMAKE_SYSTEM_NAME Linux)

# specify the cross compiler
SET(CMAKE_C_COMPILER /opt/arm/usr/bin/ppc_74xx-gcc)
SET(CMAKE_CXX_COMPILER /opt/arm/usr/bin/ppc_74xx-g++)

# where is the target environment
SET(CMAKE_FIND_ROOT_PATH /opt/arm/ppc_74xx /home/rickk/arm_inst)

# search for programs in the build host directories (not necessary)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

# configure Boost and Qt
SET(QT_QMAKE_EXECUTABLE /opt/qt-embedded/qmake)
SET(BOOST_ROOT /opt/boost_arm)

這樣就完成了相關toolChain的編寫,之後,你可以靈活的選擇到底採用宿主機版本還是開發機版本,之間的區別僅僅是一條-DCMAKE_TOOLCHAIN_FILE=./toolChain.cmake,更爽的是,如果你有很多程序需要做轉移,但目標平台是同一個,你僅僅需要寫一份toolChain放在一個地方,就可以給所有工程使用。

㈦ cmake編譯mxnet怎麼配置opencv

機某盤建新文件夾我完整路徑:D:\CMake\CMake-Study\HelloCMake; HelloCMake文件夾建立HelloCMake.cpp文件面代碼:
#include
int main()
{
std::cout<<"Study CMake Together - Hello CMake!"<<std::endl;
return 0;
}
HelloCMake文件夾建立CMakeLists.txt文件注意文件名能別必須叫名字面內容:
cmake_minimum_required(VERSION 2.6)
project(HelloCmake)
add_executable(HelloCMake hellocmake.cpp)
接著HelloCMake同級目錄建立新文件夾叫做HelloCMake-bin我機完整路徑:D:\CMake\CMake-Study\HelloCMake-bin針自目錄路徑號入座
打CMake程序界面圖(1):

圖(1)

圖(2)
接著包含CMakeLists.txtHelloCMake.cpp文件完整路徑給where is the source code建立HelloCMake-bin目錄完整路徑給where to build the binaries按Cofigure界面圖(2)
Configure完再按Generate直所紅色選項都變灰色止界面圖(3)打HelloCMake-bin發現原空文件夾面自文件圖(4)

圖(3)

圖(4)
止工程構建完打HelloCMake-bin目錄HelloCMake.sln面三工程別:ALL_BUILD;HelloCMake;ZERO_CHECK三工程概作用(理解已)HelloCMake用說自要建立工程;ALL_BUILD管理整項目工程;ZERO_CHECK實監視CMakeLists.txt文件變化工程旦CMakeLists.txt內容發任何變化ZERO_CHECK告訴編譯器要重新構建整工程環境所先工程關掉打CMakeLists.txt文件更改面內容根據說步驟走遍CMake;編譯器環境(VS2008)更改CMakeLists.txt文件直接F7編譯工程選擇者發現圖(5)所示現象發
改變CMakeLists.txt內容工程環境要重新構建、設置所必須載入新工程環境設置點Yes,點Reload重新載入設置工程環境
另外經看某些童鞋問彈圖(6)所示界面要辦能辦界面提示已經灰清楚指定exe路徑給點OK;現種情況原沒exe執行文件工程設啟工程圖(6)所示發現ALL_BUILD工程名字黑體顯示表示啟工程;或者exe執行文件工程HelloCMake右擊->設置啟工程現圖(6)所示界面
些比較瑣碎東西介紹完我起看看CMakeLists.txt面代碼表示意思爭取每句代碼都作解釋定要告訴我

圖(5)

圖(6)
CMakeLists.txt內容再羅列:
1. cmake_minimum_required(VERSION 2.6)
2. project(HelloCmake)
3. add_executable(HelloCMake hellocmake.cpp)
第1行cmake_minimum_required(VERSION 2.6)CMake版本要求基本每CMakeLists.txt文件都句代碼cmake_minimum_requiredcmake命令寫寫VERSION關鍵字必須寫且能省略;2.6CMake版本號現版本2.8.3
第2行project(HelloCmake)projectCMake命令面參數HelloCMake要工程名字換句說***.sln或者***.dsw等工程項目文件名字
第3行add_executable(HelloCMake hellocmake.cpp)add_executable同CMake命令鏈接關源文件exe執行文件命令作用第參數exe文件文件名般與project工程名致編譯文件別HelloCMake.slnHelloCMake.exeAdd_executable()面參數列表帶要編譯文件名間空格或車等隔加入:
add_executable(HelloCMake hellocmake.cpp hellocmake.h)
CMake用三命令介紹完別cmake_minimum_required; project; add_executable等

㈧ 如何用cmake 編譯OpenCV 3.1.0的opencv

用cmake 編譯OpenCV 3.1.0的opencv:

建一個新的文件夾,完整路徑:D:CMakeCMake-StudyHelloCMake,

然後在HelloCMake文件夾里建立一個HelloCMake.cpp文件,裡面的代碼如下:

#include <iostream>

int main()

{

std::cout<<"Study CMake Together - Hello CMake!"<<std::endl;

return 0;

}

然後在HelloCMake文件夾里建立一個CMakeLists.txt文件,注意文件名不能是別的,必須叫這個名字。裡面的內容如下:

cmake_minimum_required(VERSION 2.6)

project(HelloCmake)

add_executable(HelloCMake hellocmake.cpp)

接著在HelloCMake的同級目錄里建立一個新的文件夾,就叫做HelloCMake-bin,在我機子上的完整路徑是:D:CMakeCMake-StudyHelloCMake-bin,你可以針對自己的目錄路徑對號入座。

然後打開CMake程序,接著把包含CMakeLists.txt和HelloCMake.cpp文件的完整路徑給」where is the source code」,把最後建立的HelloCMake-bin目錄的完整路徑給」where to build the binaries」,然後按Cofigure,

Configure完了以後,再按Generate,直到所有的紅色選項都變成灰色為止。然後打開HelloCMake-bin,你會發現原來空的文件夾裡面自動生成了好多文件。

到此為止,工程構建完成,打開HelloCMake-bin目錄下的HelloCMake.sln,裡面有三個工程,分別是:ALL_BUILD;HelloCMake;ZERO_CHECK。這三個工程的大概作用如下(個人理解而已),HelloCMake就不用說了,自己要建立的那個工程;ALL_BUILD是管理整個項目的工程;ZERO_CHECK是實時監視CMakeLists.txt文件變化的工程,一旦CMakeLists.txt里的內容發生了任何變化,ZERO_CHECK就會告訴編譯器要重新構建整個工程環境。所以,你可以先把工程關掉,打開CMakeLists.txt文件,更改裡面的內容以後,把根據以上說的步驟走一遍CMake;你也可以在編譯器環境(如VS2008)中更改CMakeLists.txt文件,然後直接F7編譯工程。如果你選擇後者,你會發現所示的現象發生。

因為你改變了CMakeLists.txt的內容,工程的環境要重新構建、設置。所以你必須載入新的工程環境設置。點Yes,然後點Reload。重新載入設置過的工程環境。

另外一個經常看某些童鞋問的,就是當彈出所示的界面時要怎麼辦?能怎麼辦?界面上提示已經灰常清楚了,指定exe的路徑給它,然後點OK就可以了;出現這種情況的原因是你把沒有生成exe可執行文件的工程設為啟動工程了,你會發現ALL_BUILD這個工程名字是黑體顯示的,表示它是啟動工程;或者你把生成exe可執行文件的工程,如這里的HelloCMake右擊->設置為啟動工程,也不會出現所示的界面。

好,這些比較瑣碎的東西介紹完,我們一起來看看CMakeLists.txt裡面的代碼表示什麼意思,爭取每句代碼都作解釋,如果有不對的地方,一定要告訴我!

把CMakeLists.txt里的內容再羅列出來:

  1. cmake_minimum_required(VERSION 2.6)

2. project(HelloCmake)

3. add_executable(HelloCMake hellocmake.cpp)

第1行,cmake_minimum_required(VERSION 2.6)這是對CMake版本的要求,基本上每個CMakeLists.txt文件里都會有這句代碼,cmake_minimum_required是cmake里的命令,可大寫小寫。VERSION這個關鍵字必須是大寫,而且不能省略;2.6就是CMake的版本號,現在的版本是2.8.3。

第2行,project(HelloCmake),project也是CMake的命令,裡面的參數HelloCMake是你要生成的工程的名字,換句話說就是生成的***.sln或者***.dsw等工程項目文件的名字。

第3行,add_executable(HelloCMake hellocmake.cpp),add_executable同樣是CMake的命令,鏈接有關的源文件,然後生成exe可執行文件,這是這個命令的作用。第一個參數是生成的exe文件的文件名,一般與project里的工程名一致,這樣編譯生成的文件就分別是HelloCMake.sln和HelloCMake.exe,當然也可以不一樣。Add_executable()後面的是一個參數列表,可帶多個要編譯的文件名,中間以空格或回車等隔開,如可以加入:

add_executable(HelloCMake hellocmake.cpp hellocmake.h)

這樣就把CMake里最常用的三個命令介紹完了,分別是cmake_minimum_required; project; add_executable等

㈨ cmake 編譯 c++

gcc的c編譯器可以編譯.s的, 不用加任何東西。
給每一個s文件加:
set_property(SOURCE <file>.S PROPERTY LANGUAGE C)

㈩ MySQL cmake編譯時這些參數是什麼意思

MySQL cMake 常規參數介紹

-DCMAKE_INSTALL_PREFIX= 指向mysql安裝目錄
-DINSTALL_SBINDIR=sbin 指向可執行文件目錄(prefix/sbin)
-DMYSQL_DATADIR=/var/lib/mysql 指向mysql數據文件目錄(/var/lib/mysql)
-DSYSCONFDIR=/etc/mysql 指向mysql配置文件目錄(/etc/mysql)
-DINSTALL_PLUGINDIR=lib/mysql/plugin 指向插件目錄(prefix/lib/mysql/plugin)
-DINSTALL_MANDIR=share/man 指向man文檔目錄(prefix/share/man)
-DINSTALL_SHAREDIR=share 指向aclocal/mysql.m4安裝目錄(prefix/share)
-DINSTALL_LIBDIR=lib/mysql 指向對象代碼庫目錄(prefix/lib/mysql)
-DINSTALL_INCLUDEDIR=include/mysql 指向頭文件目錄(prefix/include/mysql)
-DINSTALL_INFODIR=share/info 指向info文檔存放目錄(prefix/share/info)
prefix官方推薦設為/usr
類型csv,myisam,myisammrg,heap,innobase,archive,blackhole
若想啟用某個引擎的支持:-DWITH_<ENGINE>_STORAGE_ENGINE=1
如:
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
若想禁用某個引擎的支持:-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1
如:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
-DWITH_READLINE=1 啟用readline庫支持(提供可編輯的命令行)
-DWITH_SSL=system 啟用ssl庫支持(安全套接層)
-DWITH_ZLIB=system 啟用libz庫支持(zib、gzib相關)
-DWTIH_LIBWRAP=0 禁用libwrap庫(實現了通用TCP包裝的功能,為網路服務守護進程使用)
-DMYSQL_TCP_PORT=3306 指定TCP埠為3306
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock 指定mysql.sock路徑
-DENABLED_LOCAL_INFILE=1 啟用本地數據導入支持
-DEXTRA_CHARSETS=all 啟用額外的字元集類型(默認為all)
-DDEFAULT_CHARSET=utf8 指定默認的字元集為utf8
-DDEFAULT_COLLATION=utf8_general_ci 設定默認排序規則(utf8_general_ci快速/utf8_unicode_ci准確)
-DWITH_EMBEDDED_SERVER=1 編譯嵌入式伺服器支持
-DMYSQL_USER=mysql 指定mysql用戶(默認為mysql)
-DWITH_DEBUG=0 禁用debug(默認為禁用)
-DENABLE_PROFILING=0 禁用Profiling分析(默認為開啟)
-DWITH_COMMENT='string' 一個關於編譯環境的描述性注釋

熱點內容
伺服器存儲1gb租賃費多少錢 發布:2024-11-01 12:38:09 瀏覽:871
蘋果6vpn添加配置怎麼弄 發布:2024-11-01 12:36:18 瀏覽:796
職場的幸福密碼是什麼 發布:2024-11-01 12:34:57 瀏覽:748
18經驗起床的伺服器ip 發布:2024-11-01 12:30:15 瀏覽:39
這個鎖屏密碼是什麼 發布:2024-11-01 12:24:51 瀏覽:92
相機存儲卡排名 發布:2024-11-01 12:24:49 瀏覽:958
androidxml格式化 發布:2024-11-01 12:23:14 瀏覽:165
Vb6編譯是錯誤不知道錯誤代碼 發布:2024-11-01 12:16:23 瀏覽:159
區域網電腦訪問伺服器怎麼提速 發布:2024-11-01 12:14:09 瀏覽:322
美創資料庫 發布:2024-11-01 12:05:45 瀏覽:916