
[英]Parse a config file (.ini or .cfg) with CMake to create a header file
[英]Create a header file alias in cmake
我正在将一些降压脚本转换为 cmake,我遇到了一个问题,脚本基于条件编译标志创建了 header 文件的别名以包含,并且在源文件中包含了别名,出于代表性目的,我们有类似的东西这
if(someConditionTrue)
Commheader.h = TargetAHeader.h
else
Commheader.h = TargetBHeader.h
我想知道 cmake 是否可以实现类似的功能。文件系统中不存在 commheader.h 文件,它只是用作表示必要 header 的别名。
我尝试了 sset_source_files_properties 和 set_target_properties 但它不起作用,我在编译代码时仍然遇到 filenotfound 错误。
PS:我对buck和cmake都是新手,
@user在评论中写的是我的经验中唯一合理的方法。 前段时间我有(不完全相同,但相似)问题,这导致我创建硬链接(如果它是在 Windows 上编译的)或符号链接(如果它是在其他地方编译的)。
为了区分它,我检查了编译器(我们只使用 Windows 的 MSVC),即我有看起来像这样的代码(在宏内)
注意:在这个例子中你可以看到它是POST_BUILD
(因此我提到它只是一个类似的问题):
if (MSVC)
# Make a hard link to the file
add_custom_command(TARGET ${TARGET} POST_BUILD
COMMAND if not exist "${HEADER_DEST_DIR}/${HEADER}" \( mklink /h "${HEADER_DEST_DIR}/${HEADER}" "${HEADER_SOURCE_DIR}/${HEADER}" \)
)
else()
# Make a symbolic link to the file
add_custom_command(TARGET ${TARGET} POST_BUILD
COMMAND ln -sf "${HEADER_SOURCE_DIR}/${HEADER}" "${HEADER_DEST_DIR}/${HEADER}"
)
endif()
我使用get_filename_component()
来获取原始头文件示例用法所需的属性:
get_filename_component(HEADER_DIRECTORY "${HEADER}" DIRECTORY)
@user 提到现在通过file(CREATE_SYMLINK)
更简单,我会试一试。 请记住,您只需要在构建过程中使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.