## 前言
CMake是一個跨平臺的安裝(編譯)工具,可以用簡單的語句來描述所有平臺的安裝(編譯過程)。他能夠輸出各種各樣的makefile或者project文件,能測試編譯器所支持的C++特性,類似UNIX下的automake。只是 CMake 的組態檔取名為**CMakeLists.txt**。
Cmake 并不直接建構出最終的軟件,而是產生標準的建構檔(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建構方式使用。這使得熟悉某個集成開發環境(IDE)的開發者可以用標準的方式建構他的軟件,這種可以使用各平臺的原生建構系統的能力是 CMake 和 SCons 等其他類似系統的區別之處。
## [](http://127.0.0.1:3334/mdEditor/#%E7%AE%80%E5%8D%95%E5%AE%9E%E4%BE%8B)簡單實例
## [](http://127.0.0.1:3334/mdEditor/#cmake%E5%8F%82%E6%95%B0%E8%AF%A6%E8%A7%A3)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)【默認/etc,可以不指派】
-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)
-DWITH_READLINE=1 啟用readline庫支持(提供可編輯的命令行)
-DWITH_SSL=system 啟用ssl庫支持(安全套接層)
-DWITH_ZLIB=system 啟用libz庫支持(zib、gzib相關)
-DWITH_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' 一個關于編譯環境的描述性注釋
類型csv,myisam,myisammrg,heap,innobase,archive,blackhole
The MyISAM, MERGE, MEMORY, and CSV engines are mandatory (always compiled into the server) and need not be installed explicitly.(說明:mysql默認支持的數據庫引擎有MyISAM, MERGE, MEMORY, CSV,無需在編譯時再聲明)
若想啟用某個引擎的支持:-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
~~~
## [](http://127.0.0.1:3334/mdEditor/#%E7%94%9F%E6%88%90linux%E9%A1%B9%E7%9B%AE)生成linux項目
~~~
cmake .. -DBOOST_ROOT=D:\local\boost_1_66_0 -DRAIBLOCKS_GUI=ON -DQt5_DIR=D:\qt\Qt5.9.4\5.9.4\msvc2015_64\lib\cmake\Qt5 -DRAIBLOCKS_SIMD_OPTIMIZATIONS=TRUE -DBOOST_INCLUDEDIR=D:\local\boost_1_66_0\boost -DBOOST_LIBRARYDIR=D:\local\boost_1_66_0\lib64-msvc-14.0 -G "Visual Studio 14 2015 Win64" -DIPHLPAPI_LIBRARY="C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\iphlpapi.lib" -DWINSOCK2_LIBRARY="C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\WS2_32.lib"
~~~
## [](http://127.0.0.1:3334/mdEditor/#%E6%89%93%E5%8C%85%E5%91%BD%E4%BB%A4)打包命令
~~~
cpack -G "NSIS"
~~~
## [](http://127.0.0.1:3334/mdEditor/#%E7%94%9F%E6%88%90windows%E9%A1%B9%E7%9B%AE)生成windows項目
~~~
cmake .. -G "Visual Studio 14 2015 Win64" -DBOOST_ROOT=D:/local/boost_1_66_0 -DBOOST_INCLUDEDIR=D:/local/boost_1_66_0/boost -DBOOST_LIBRARYDIR=D:/local/boost_1_66_0/lib64-msvc-14.0 -DRAIBLOCKS_SIMD_OPTIMIZATIONS=TRUE -D CMAKE_BUILD_TYPE=Release -D CMAKE_INCLUDE_PATH=D:/local/third/include -D CMAKE_LIBRARY_PATH=D:/local/third/lib -DIPHLPAPI_LIBRARY="C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\iphlpapi.lib" -DWINSOCK2_LIBRARY="C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\WS2_32.lib"
~~~
- Python 筆記
- Golang 筆記
- C++ 標準環境開發指南
- 服務器監控筆記
- 騰訊云使用筆記
- 阿里云使用筆記
- 華為云使用筆記
- Centos 筆記
- Centos 之Systemctl系統服務
- Python 筆記
- Centos 修復yum工具
- Centos 安裝docker
- Centos 安裝docker-compose
- Redis 數據遷移
- 騰訊云使用筆記
- 查看linux中的TCP連接數
- macOS上安裝 svn 工具
- 區塊鏈之Bitcoin節點搭建
- 數據庫性能優化總結
- Git 筆記
- CMake 筆記
- Elasticsearch 筆記
- Kafka 筆記
- Docker 筆記
- Mysql 筆記
- Clickhouse 筆記
- 技術問題匯總