[英]Generating / patching an XML file with a CMake variable
在我基于 CMake 的项目中,我有一些 XML 文件用于生成代码(使用典型的add_custom_command
和add_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_command
和add_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.