makefile
利用通配符,wildcard和patsubst
(ssl_fileserver那个项目是写的比较好的makefile,去服务器和github上复习即可)
cmake
利用file glob命令展开
例子:
file(GLOB QY_COMMON_SRC ${CMAKE_CURRENT_SOURCE_DIR}/.cpp
${CMAKE_CURRENT_SOURCE_DIR}/types/.cpp)
再用string replace命令替换
但是cmake不推荐这样的做法,
1.cmake重新编译是根据是否更新了cmake list中指定文件决定,更新源文件可能无法被检测(cmake其实是生成makefile,可见这个makefile没有换成相应通配符形式)
2.某些平台上的cmake有一个flag能让cmake始终检查文件夹是否更新,但这也是一个开销,项目中往往写明源文件的需求偏多(cmake官网上有对file glob的详细说明)