【问题标题】:Build two slightly different projects from one code in Qt/C++用 Qt/C++ 中的一个代码构建两个略有不同的项目
【发布时间】:2020-06-24 07:28:49
【问题描述】:

我有一个 Qt 项目,我希望能够构建两个略有不同的可执行文件 - GUI 和 SimplifiedGUI。在第二个中,一些选项卡和按钮将被隐藏。

简化 exe 的所有设置都将在 if 语句中,我需要一种方法来使该 if 语句中的布尔表达式 True 或 False 取决于我要构建的内容。我想在不更改代码的情况下执行此操作,因为版本控制会受到影响。我认为最简单的方法是作为命令行参数以某种方式构建,但我不知道该怎么做。

你有什么想法和建议吗?

【问题讨论】:

    标签: c++ build qt5 qmake


    【解决方案1】:

    您可以使用预处理器符号进行条件编译:

    #include <iostream>
    #ifdef SIMPLE_GUI_FLAG
    constexpr bool simple = true;
    #else
    constexpr bool simple = false;
    #endif
    
    int main() {
        if (simple) std::cout << "simple";
    }
    

    对于 gcc,您可以使用 -DSIMPLE_GUI_FLAG 调用它以定义符号 SIMPLE_GUI_FLAG,否则未定义。

    PS:这可能是基于意见的,但我会尽量减少受预处理器影响的代码(因此上述代码中的bool simple)。如果你想让编译器更容易检测死路径(考虑上面例子中的simple == false),你可以使用if constexpr

    【讨论】:

    • 感谢您的快速答复!你能告诉我如何用 MinGW 定义 SIMPLE_GUI_FLAG 吗?
    • @Rufledore 基本上wingw 是Windows 的gcc,我希望它也是-DNAME_OF_THE_SYMBOL
    • 只是添加。在 QT5 中,符号 SIMPLE_GUI_FLAG 可以在 pro 文件中定义如下: DEFINE += SIMPLE_GUI_FLAG
    猜你喜欢
    • 2022-09-09
    • 1970-01-01
    • 2010-09-17
    • 2016-07-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多