博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CMAKE 生成VS2008静态库工程 与 CMAKE使用,CMakeLists.txt编写总结
阅读量:5908 次
发布时间:2019-06-19

本文共 2190 字,大约阅读时间需要 7 分钟。

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(CompilerFlags44         CMAKE_CXX_FLAGS45         CMAKE_CXX_FLAGS_DEBUG46         CMAKE_CXX_FLAGS_RELEASE47         CMAKE_C_FLAGS48         CMAKE_C_FLAGS_DEBUG49         CMAKE_C_FLAGS_RELEASE50         )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:

 

 

 

 TIPS:如果CMakeLists.txt内容有更改,需要重新cmake命令的话,应该把CmakeCache.txt和相关文件一起删除,以保证cmake不读取旧数据。

你可能感兴趣的文章
一年多了,该回来了……
查看>>
四则运算
查看>>
Qt5 for Android: incompatible ABI
查看>>
zookeeper学习
查看>>
class类名的管理
查看>>
LeetCode:Rectangle Area
查看>>
文本查询
查看>>
查看帐号授权信息
查看>>
小程序(四):模板
查看>>
【转】Java - printf
查看>>
jquery获取元素到屏幕底的可视距离
查看>>
ENDNOTE使用方法(转发)
查看>>
计算机数制和运算的一点总结.
查看>>
UML系列 (五) 为什么要用UML建模之建模的重要性
查看>>
Get Docker CE for CentOS
查看>>
修改用户进程可打开文件数限制(转)
查看>>
框架是什么,框架有什么用(转)
查看>>
集成测试
查看>>
2013长沙 G Graph Reconstruction (Havel-Hakimi定理)
查看>>
[android] 手机卫士黑名单功能(列表展示)
查看>>