cmake使用技巧

  • 获取当前目录下的文件夹名称
MACRO(SUBDIRLIST result curdir)
    FILE(GLOB children RELATIVE ${curdir} ${curdir}/*)
    SET(dirlist "")
    FOREACH(child ${children})
        IF(IS_DIRECTORY ${curdir}/${child})
            STRING( REGEX REPLACE ".*/(.*)" "\\1" FOLDER ${child})
            LIST(APPEND dirlist ${FOLDER})
        ENDIF()
    ENDFOREACH()
    SET(${result} ${dirlist})
ENDMACRO()
  • 把当前文件夹下所有目录都加入的项目中
subdirlist(SUBDIRS ${CMAKE_CURRENT_SOURCE_DIR})
foreach(subdir ${SUBDIRS})
    add_subdirectory(${subdir})
endforeach()
  • 以当前文件夹名称作为可执行文件名称
STRING( REGEX REPLACE ".*/(.*)" "\\1" CURRENT_FOLDER ${CMAKE_CURRENT_SOURCE_DIR})
set(TARGET ${CURRENT_FOLDER})
add_executable(${TARGET} main.c)

以上技巧适合于一个大工程下有很多小的执行文件,不需要每次指定可执行文件的配置,比如我的一个使用场景,使用c语言完成csapp每个章节的练习题和家庭作业

你可能感兴趣的:(工具,环境搭建,小结)