CMake用法筆記 |
發(fā)布時間: 2012/9/3 17:16:59 |
最近在學習Mysql的源代碼,用到了CMake做為Build工具。 通過CMake去掃描系統(tǒng)的一些配置,會生成config.h文件,這個頭文件里包含了一系列的以HAVE_為前綴的宏。 在源代碼根目錄下的config.h.cmake 是模板文件,包含了所有的掃描項。 在Mysql的影子編譯目錄里面(我一般都是用影子編譯,保持源代碼目錄的純潔性),我們可以找到config.h,CMake腳本會把config.h拷貝成另外一個內容完全一模一樣的my_config.h文件。-
我們?yōu)g覽Mysql目錄的CMake目錄,這個是Mysql專有的CMake腳本,我們通過查找,在cmake\os\linux.cmake中找到了 HAVE_NPTL的定義。 在這個文件里HAVE_NPTL是固定設為1的,我們繼續(xù)學習非固定設置的情況。 比如 CHECK_SYMBOL_EXISTS(SHM_HUGETLB sys/shm.h HAVE_DECL_SHM_HUGETLB) 該CMake文件的包含了 INCLUDE(CheckSymbolExists) CheckSymbolExists 是CMake的公共模塊,我的機器上位于/usr/share/cmake-2.8/Modules目錄下。 我們繼續(xù)研究該文件: 閱讀了其源代碼后,MACRO(CHECK_SYMBOL_EXISTS SYMBOL FILES VARIABLE) 這個宏的作用就是,查找相關文件(FILES)里面是否包含相關符號(SYMBOL) 如果存在則設置VARIABLE 為1,MESSAGE宏會在屏幕上做相關打印。 上面的列子中就是在 sys/shm.h 文件里面查找SHM_HUGETLB 符號。 我們查看 /usr/include/shm.h
本文出自:億恩科技【www.cmtents.com】 |