使用CMakeList 编译的,添加用户源文件的好方法,无需手动一个个添加

https://forum.cocos.com/t/cmakelists-txt/25394/2?u=dengzhuangfeng

FILE(GLOB_RECURSE USER_HEADER "Classes/*.hpp" "Classes/*.h")
FILE(GLOB_RECURSE USER_CPP "Classes/*.cpp")

MESSAGE("打印Classes 目录下所有的头文件 ---")
FOREACH(FILE_PATH ${USER_HEADER})
    MESSAGE(${FILE_PATH})
ENDFOREACH(FILE_PATH)


MESSAGE("打印Classes 目录下所有的cpp文件 ---")
FOREACH(FILE_PATH ${USER_CPP})
    MESSAGE(${FILE_PATH})
ENDFOREACH(FILE_PATH)

# add cross-platforms source files and header files
list(APPEND GAME_SOURCE
        ${USER_CPP}
     )
list(APPEND GAME_HEADER
        ${USER_HEADER}
     )

最外层的CMakeLists.txt 有关Classes 文件夹的,改成这样

CMake 官方并不建议用 FILE 搜索源文件,它有副作用。

这种的话,当源文件列表变更时,CMake 脚本感知不到,它就无法处理增量,除非你每次编译,都先运行 CMake 脚本,再执行二次构建。

那有其他更好的办法吗?@panda @minggo

无它,每新增一个文件,就新写一行。

XCode 和 VS 也不会自动添加源码,都要手动包含

@leda 说得对。写这些代码文件还好啦,如果以前不是用 cmake 的话,第一次会比较多,之后都是简单的增减。

嗯,难怪我看源码里面也是一个个文件添加的。我之所以想用遍历的方式是因为以前用ndk的时候,在.mk文件里面一次性遍历的。

用aux_source_directory可以吧

你好。 我添加的源码中有用到库 就会编译不通过:


要怎么解决呢?

可以用脚本遍历文件,生成头文件和源文件列表

CMakeLists.py.zip (1.1 KB)