## 前言 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" ~~~