0

我有一个 C/C++ 项目,该项目被编写为配置为CMake. 我正在尝试Qbs通过将其转换为 use来学习Qbs。碰巧有使用该功能配置的.h.in文件。例如在一个名为的文件中转换为使用下面的代码。CMakeconfigure_file()CMakebson-version.h.inbson-version.h

configure_file (
   "${SOURCE_DIR}/src/bson/bson-version.h.in"
   "${PROJECT_BINARY_DIR}/src/bson/bson-version.h"
)

如何在 Qbs 中实现这一点?我在 Windows 10 x64 上。

4

1 回答 1

0

对此没有内置功能。不过,您可以轻松地自己实现它。这是一个草图(未经测试):

Product {
    // ...
    Group {
        files: ["src/bson/bson-version.h.in"]
        fileTags: ["header.in"]
    }
    // ...
    cpp.includePaths: [buildDirectory + "/generated_headers"]
    Rule {
        inputs: ["header.in"]
        Artifact {
            filePath: "generated_headers/bson-version.h"
            fileTags: ["hpp"]
        }
        prepare: {
            // Create JavaScriptCommand and do the replacements
            // via qbs.TextFile. 
        }
    }
}

当然,如果 .in 文件引用 cmake 变量,则必须在项目中定义等效的 qbs 属性并在规则中考虑它们。

于 2017-09-09T20:57:17.757 回答