【发布时间】:2011-08-18 07:10:13
【问题描述】:
我有一个 GLOB 表达式,例如:
file( GLOB HEADER_FILES path/*.h )
并且想生成一个包含每个 HEADER_FILES 条目定义的头文件。例如,如果文件名为“path/my_class.h”,那么宏应该是:
#define PATH_MY_CLASS_FILE /full/path/to/path/my_class.h
这可以使用 bash 轻松完成,但我们也针对 Windows 和 Visual Studio。有没有一种纯粹的 CMAKE 方法来完成这项工作?还是我必须编写一个快速的 C++ 程序并创建一个自定义依赖项/目标来生成文件?
根据我想出的答案:
file(WRITE headers.h "//Generated headers include\n")
foreach(header_path ${APP_SHARED_MOC_HEADERS})
# drop full name for macro name
string(REPLACE "${INCLUDE_DIR}/" "" header "${header_path}")
# drop extension
string(REPLACE ".h" "" header "${header}")
string(REPLACE "/" "_" header "${header}")
string(TOUPPER "${header}" define_name)
file(APPEND headers.h "#define PATH_${define_name} ${header_path}\n")
endforeach()
【问题讨论】: