构建系统

用宏添加文件,自动解析头文件源文件

使用了这样的宏:

macro(RUNTIME_ADD_SOURCE)
	set(HEADER_FILES "")
	set(SOURCE_FILES "")
    foreach(SOURCE_FILE ${ARGN})
        if(SOURCE_FILE MATCHES "(\.h$)|(\.hpp$)")
            list(APPEND HEADER_FILES
                 "${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE_FILE}")
        elseif(SOURCE_FILE MATCHES "(\.cpp$)|(\.cc$)")
            list(APPEND SOURCE_FILES
                 "${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE_FILE}")
        endif()
    endforeach()
    set(RuntimeHeaderFiles ${RuntimeHeaderFiles} ${HEADER_FILES} PARENT_SCOPE)
    set(RuntimeSourceFiles ${RuntimeSourceFiles} ${SOURCE_FILES} PARENT_SCOPE)
endmacro(RUNTIME_ADD_SOURCE)

对于这样的文件结构:

我们只需要写:

add_subdirectory(Layer)

RUNTIME_ADD_SOURCE(
    Application.h Application.cpp
)

但是要注意,文件夹套文件夹的结构,必须要在底层再写一个 RUNTIME_ADD_SOURCE 上层才能接收到。例如 Plugins 的这样的结构:

我们就需要写一个空的宏:

add_subdirectory(MeshImporter)

PLUGINS_ADD_SOURCE()

Last updated