cmake 使用的常用配置项目例子

cmake_minimum_required(VERSION 2.8.11)
project(XXX)

# 搜索目标文件夹文件列表
file(GLOB SRC ${CMAKE_CURRENT_LIST_DIR}/src/*)

# CMAKE_CURRENT_LIST_DIR CMAKE文件(CMakeLists.txt和.cmake)所在目录
# CMAKE_CURRENT_BINRARY_DIR # cmake 工程构建目录; 如果有add_subdirectory subdir 目录下的CMakeLists.txt 中 CMAKE_CURRENT_BINRARY_DIR 会引用到构建根目录的相对路径。


add_executable(XXX $(SRC))

sample CMakeLists.txt

 

windows vs 默认构建的exe是md 模式的运行需要一堆的运行库dll,很是麻烦,改成MT,运行库的相关函数连接到exe内部,可以复制到没有安装运行库的环境中运行。

mt.cmake

if(MSVC)
    
option(BUILD_WITH_MT " Disable IMP lib" ON)

if(BUILD_WITH_MT)
    set(CompilerFlags
        CMAKE_CXX_FLAGS
        CMAKE_CXX_FLAGS_DEBUG
        CMAKE_CXX_FLAGS_RELEASE
        CMAKE_CXX_FLAGS_MINSIZEREL
        CMAKE_CXX_FLAGS_RELWITHDEBINFO
        CMAKE_C_FLAGS
        CMAKE_C_FLAGS_DEBUG
        CMAKE_C_FLAGS_RELEASE
		CMAKE_C_FLAGS_MINSIZEREL
		CMAKE_C_FLAGS_RELWITHDEBINFO
    )
        
    foreach(CompilerFlag ${CompilerFlags})
            string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
            string(REPLACE "/Ob0" "" ${CompilerFlag} "${${CompilerFlag}}")
            string(REPLACE "/TC" "" ${CompilerFlag} "${${CompilerFlag}}")
    endforeach()
endif(BUILD_WITH_MT)

endif(MSVC)

 

同时构建第三方开源库的办法,现在开发程序,总是需要引用一些第三方开源库,不建议重复造轮子。以下是一个同时构建zlib的例子。缺点是编译时间比较久。

zip.cmake


include (ExternalProject)

set(ZLIB_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/buildtrees/zlib)
set(ZLIB_URL ${CMAKE_CURRENT_LIST_DIR}/../third_party/zlib1211.tar.gz)
set(ZLIB_INSTALL ${CMAKE_CURRENT_BINARY_DIR}/packages/zlib)


ExternalProject_Add(zlib
    PREFIX ${ZLIB_PREFIX}
    URL ${ZLIB_URL}
    CMAKE_CACHE_ARGS
        -DENABLE_SHARED:BOOL=OFF
        -DENABLE_STATIC:BOOL=ON
		-DWITH_SIMD:BOOL=ON
		-DWITH_TURBOJPEG:BOOL=ON
        -DWITH_JPEG8:BOOL=OFF
        -DWITH_CRT_DLL:BOOL=OFF
        -DCMAKE_BUILD_TYPE:STRING=Release
        -DCMAKE_INSTALL_PREFIX:STRING=${ZLIB_INSTALL}
        -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE}
)

include_directories(${ZLIB_INSTALL}/include)
link_directories(${ZLIB_INSTALL}/lib)
set(ZLIB_LIBRARIES 
${ZLIB_INSTALL}/lib/zlibstaticd.lib
)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值