gpt4 book ai didi

c++ - CMake 使用 GLOB 结果写入头文件

转载 作者:行者123 更新时间:2023-11-30 04:34:36 25 4
gpt4 key购买 nike

我有一个 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()

最佳答案

尝试这样的事情:

file(GLOB HEADER_FILES path/*.h)

foreach(header ${HEADERS_FILES})
# here replace / for linux and \ for windows
string(REPLACE "/" "_" header_path header)
string(TOUPPER header_path final_header_path)
file(APPEND headers_defines_file define
PATH_${final_header_path} ${CMAKE_CURRENT_SOURCE_DIR}/header)
endforeach(header)

关于c++ - CMake 使用 GLOB 结果写入头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5879805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com