CMAKE 生成VS2008靜態庫工程 與 CMAKE使用,CMakeLists.txt編寫總結


cmake -G"Visual Studio 9 2008 Win64"

 

以上命令得用cd命令切換到頂層CMakeLists.txt的當前目錄,才能生效

以下是CMakeLists.txt的代碼

 

 1 cmake_minimum_required(VERSION 2.8)
 2 
 3 PROJECT(FFI) 
 4 
 5 add_definitions(-D_CRT_SECURE_NO_WARNINGS)
 6 add_definitions(-D_LIB)
 7 
 8 #包含工程所需要的頭文件路徑
 9 include_directories(${PROJECT_SOURCE_DIR}/include)
10 include_directories(${PROJECT_SOURCE_DIR}/src/x86)
11 
12 #add_subdirectory(src)
13 
14 #設置源文件的相對路徑和文件名
15 #PROJECT_SOURCE_DIR變量為最頂層Cmakelists.txt的路徑
16 set(SRC ${PROJECT_SOURCE_DIR}/src/closures.c 
17 ${PROJECT_SOURCE_DIR}/src/debug.c 
18 ${PROJECT_SOURCE_DIR}/src/prep_cif.c 
19 ${PROJECT_SOURCE_DIR}/src/raw_api.c 
20 ${PROJECT_SOURCE_DIR}/src/types.c 
21 ${PROJECT_SOURCE_DIR}/src/x86/ffi.c 
22 ${PROJECT_SOURCE_DIR}/src/x86/ffi64.c 
23 ${PROJECT_SOURCE_DIR}/src/x86/win64.asm 
24 )
25 
26 
27 
28 
29 
30 
31 
32 #file(GLOB FFI_SRC  blocksort.c bzilb.c compress.c crctable.c decompress.c huffman.c rendtable.c )
33 #file(GLOB FFI_HDR RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.h)
34 
35 #source_group("Header Files" FILES ${ZLIB_HDR})
36 ADD_LIBRARY(FFI STATIC ${SRC} )
37 
38 set_target_properties(FFI PROPERTIES COMPILE_FLAGS "/EHsc /GF")
39 #set_target_properties(ZLib PROPERTIES COMPILE_FLAGS "/GF")  #VERY IMPORTANT: can not use twice.
40 
41 #set_source_files_properties(${ZLIB_SRC} PROPERTIES COMPILE_FLAGS "/EHsc")   #every file compile option.
42 
43 set(CompilerFlags
44         CMAKE_CXX_FLAGS
45         CMAKE_CXX_FLAGS_DEBUG
46         CMAKE_CXX_FLAGS_RELEASE
47         CMAKE_C_FLAGS
48         CMAKE_C_FLAGS_DEBUG
49         CMAKE_C_FLAGS_RELEASE
50         )
51 foreach(CompilerFlag ${CompilerFlags})
52   string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
53   string(REPLACE "/Ob0" "" ${CompilerFlag} "${${CompilerFlag}}")
54   string(REPLACE "/TC" "" ${CompilerFlag} "${${CompilerFlag}}")
55 endforeach()
View Code

 

TIPS:CMakeLists.txt為描述編譯鏈接的規則文件,也就是CMAKE這個軟件是根據解析這個txt文件來創建VS2008這個工程文件的(.sln, vcproject),Linux下工程文件為makefile,既然是工程文件肯定要有頭文件和源文件,還有lib庫依賴項,因為整個工程生成的是lib庫,所以就不用add_subdirectory等一些命令了。

 

以下是某個cnblog的好心程序員翻譯的Cmake官方手冊文檔:

http://www.cnblogs.com/coderfenghc/archive/2012/06/16/CMake_ch_01.html

references:

http://www.cmake.org/Wiki/CMake_FAQ#Writing_CMakeLists.txt

http://www.cmake.org/Wiki/CMake/Tutorials/Object_Library

http://www.cmake.org/pipermail/cmake/2010-March/035992.html

 

http://blog.csdn.net/dbzhang800/article/details/6314073

 

http://blog.csdn.net/joyyoj/article/details/6134039

 

 TIPS:如果CMakeLists.txt內容有更改,需要重新cmake命令的話,應該把CmakeCache.txt和相關文件一起刪除,以保證cmake不讀取舊數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM