CMake在Visual studio中的使用总结

1. 在cmake配置使用MFC

ADD_DEFINITIONS(-D_AFXDLL)
SET(CMAKE_MFC_FLAG 2)

2. 在cmake中设置可调试

无论debug还是release度可以通过下面语句来让程序可调试

SET(CMAKE_CXX_FLAGS_DEBUG "/Zi /Od /DEBUG") #debugSET(CMAKE_CXX_FLAGS_RELEASE "/Zi /Od /DEBUG") #release

3. 如何定义_WIN32宏

CMake定义宏一般是用add_definition()函数,但是_win32 和 win32 win64是无法通过这个来修改的,只能通过修改CMAKE_CXX_FLAGS来实现

 set(CMAKE_CXX_FLAGS "/DWIN64 /D_WIN32")

4. Visual studio 工程按文件夹显示层次结构

function(source_group_by_dir files)
    SET(cur_dir ${CMAKE_CURRENT_SOURCE_DIR})
    foreach(filename ${files})
        STRING(REGEX REPLACE "${cur_dir}" "" fpath ${filename})
        STRING(FIND ${fpath} "/" lastidx REVERSE)
        STRING(SUBSTRING ${fpath} 0 ${lastidx} fakegroupname)
        STRING(COMPARE EQUAL "${fakegroupname}" "" bequal)
        IF(NOT ${bequal} EQUAL 1)
            STRING(REPLACE "/" "\\" groupname ${fakegroupname})

            string(LENGTH ${groupname} igrouplength)

            set(groupname2 ${groupname})


            if(${igrouplength} GREATER 0)
                STRING(SUBSTRING ${groupname} 1 ${igrouplength}-1 groupname2)
            ELSE(${igrouplength} GREATER 0)
                SET(groupname2 "\\")
            ENDIF(${igrouplength} GREATER 0)
        ELSE(NOT ${bequal} EQUAL 1)
            SET(groupname2 "\\")
        ENDIF(NOT ${bequal} EQUAL 1)

        SOURCE_GROUP(${groupname2} FILES ${filename})
    endforeach(filename ${files})
endfunction(source_group_by_dir files)


FILE(GLOB_RECURSE headerfiles ${CMAKE_CURRENT_SOURCE_DIR} "*.h" ".inl")
FILE(GLOB_RECURSE sourcefiles ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp" "*.c" "*.cxx")
FILE(GLOB resourcefiles ${CMAKE_CURRENT_SOURCE_DIR} "*.rc")
SET(SRC_LISTS ${headerfiles} ${sourcefiles} ${CMAKE_CURRENT_SOURCE_DIR}/XTToolkitPro.rc)
source_group_by_dir("${SRC_LISTS}")

你可能感兴趣的:(CMake)