繁体   English   中英

在cmake中创建一个header的文件别名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM