如何写cmake使其包含c++11特性

如何写cmake使其包含c++11特性,第1张

添加 C flags

# default

SET(CMAKE_CXX_FLAGS " $ENV{CXXFLAGS}  -Wall -g -ggdb -O3 --std=c++11") 

# use cmake  -DCMAKE_BUILD_TYPE=debug .. 

#SET(CMAKE_CXX_FLAGS_DEBUG " $ENV{CXXFLAGS}  -Wall -g -ggdb --std=c++11")

# use cmake  -DCMAKE_BUILD_TYPE=release ..

#SET(CMAKE_CXX_FLAGS_RELEASE " $ENV{CXXFLAGS} -Wall -O3 --std=c++11") 

同理, 要是 C99 的话

SET(CMAKE_C_FLAGS "$ENV{CFLAGS}  -Wall -g -ggdb -O3 --std=c99") 

#SET(CMAKE_C_FLAGS_DEBUG "$ENV{CFLAGS}  -Wall -g -ggdb --std=c99") 

#SET(CMAKE_C_FLAGS_RELEASE " $ENV{CFLAGS}  -Wall  -O3 --std=c99") 

给你个例子

project(NumRandom)

cmake_minimum_required(VERSION 2.8)

add_definitions(-D_UNICODE -DUNICODE)

add_definitions("/wd4819")

if(NOT ${CMAKE_BUILD_TYPE} MATCHES "Debug")

set(WINDOWS WIN32)

add_definitions(-D_IRR_STATIC_LIB_)

set(LIBRARIES Irrlicht_S.lib)

else()

set(LIBRARIES Irrlicht.lib)

endif()

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")

foreach(flag_var

CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE

CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO

CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE

CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)

if(${flag_var} MATCHES "/MD")

string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")

endif()

endforeach()

aux_source_directory(. SRC_LIST)

add_executable(${PROJECT_NAME} ${WINDOWS} ${SRC_LIST})

set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "/ENTRY:mainCRTStartup")

target_link_libraries(${PROJECT_NAME} ${LIBRARIES})

以及一个target的调用方法:

cmd /C "if not exist Build (mkdir Build &&chdir Build &&cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=MinSizeRel .. &&nmake verbose=1) else chdir Build &&cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=MinSizeRel .. &&nmake"

注意其中的:-DCMAKE_BUILD_TYPE=MinSizeRel

转载


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7913709.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存