繁体   English   中英

使用 CMake 变量生成/修补 XML 文件

[英]Generating / patching an XML file with a CMake variable

在我基于 CMake 的项目中,我有一些 XML 文件用于生成代码(使用典型的add_custom_commandadd_custom_target模式)。

此 XML 文件包括其他文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
    <definition
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="../../../MyComponent/schema.xsd">
    <include href="../../../MyComponent/another.xml" />
</definition>

现在我想让../../../MyComponent依赖于 CMake 变量。 肯定可行的是编写一个生成器,该生成器采用 XML 模板并使用 CMake 变量的内容替换路径,这里也使用add_custom_commandadd_custom_target模式。

是否有解决方案可以使用简单的 CMake 和/或 XML 机制来修补或生成正确的路径?

把我的评论变成答案

我已经使用以下技术为 CMake 生成的 VS 环境生成用户项目设置 XML 文件(例如参见 Jim Butler 的这篇博客文章)。

在你的情况下,我会这样做:

一些.xml文件

<?xml version="1.0" encoding="utf-8"?>
    <definition
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="${_my_xml_root_path}/schema.xsd">
    <include href="${_my_xml_root_path}/another.xml" />
</definition>

在你的CMakeLists.txt (取决于你想要注入的路径):

get_filename_component(_my_xml_root_path "../../../MyComponent" ABSOLUTE)
set(_some_xml_path "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/some.xml")
configure_file("some.xml.in" "${_some_xml_path}")

然后您可以稍后使用${_some_xml_path}作为输入文件提供给其他构建步骤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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