【问题标题】:Building a wxWidgets project in VS Code在 VS Code 中构建 wxWidgets 项目
【发布时间】:2021-07-04 18:15:33
【问题描述】:

我尝试开始使用 Linux(Fedora 33),但现在遇到了麻烦。我想使用 VS Code 并正确构建简单的 cpp 项目,但我想使用 wxWidgets 制作 GUI。所以我创建了简单的示例,但它不想构建它。我从 rpm 包安装了 wxWidgets。我还在配置文件的 includePath 中添加了路径。现在我想向您展示代码和错误。

#include <wx/wxprec.h>
#ifndef WX_PRECOMP
    #include <wx/wx.h>
#endif

int main() { return 0; }    

tasks.json

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ сборка активного файла",
            "command": "/usr/bin/g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "компилятор: /usr/bin/g++"
        }
    ],
    "version": "2.0.0"
}

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ - Сборка и отладка активного файла",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Включить автоматическое               форматирование для gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++ сборка активного файла",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}

c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/include/**",
                "/usr/lib64/wx/include/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/clang++",
            "cStandard": "c17",
            "cppStandard": "c++14",
            "intelliSenseMode": "linux-clang-x64",
            "compilerArgs": []
        }
    ],
    "version": 4
}

现在,我认为智能不会给我任何错误。

编译器错误:

 Запуск сборки…
 /usr/bin/g++ -g /home/nikita/Workfiles/wxex/main.cpp -o /home/nikita/Workfiles/wxex/main
/home/nikita/Workfiles/wxex/main.cpp:1:10: фатальная ошибка: wx/wxprec.h: Нет такого файла или каталога
1 | #include <wx/wxprec.h>
  |          ^~~~~~~~~~~~~
 компиляция прервана.
 
Сборка завершена с ошибками.
The terminal process failed to launch (exit code: -1).

【问题讨论】:

  • 请提供minimal reproducible example,其中包含文本而非图像的错误
  • @NikitaSimonenko,在这里发帖时请不要使用截图。有些人是盲人,他们无法帮助你。有些人在防火墙后面或受限制的网络 - 他们将无法为您提供帮助。所以你切断了那些想帮助但无能为力的人。请不要那样做。 TIA!
  • 我也没有看到你根据你的编译命令把正确的包含目录放在哪里。请修复您的项目,然后您的代码将编译。
  • 对不起,这是我的第一个问题,所以没有考虑细节。当我有时间时,我会编辑我的问题。感谢您的建议!
  • @Nikitasimonenko,请安装 wx 示例代码并尝试构建最小示例。你会看到你使用的路径是不够的。

标签: c++ linux visual-studio-code wxwidgets fedora


【解决方案1】:

替换

#include <wx/wxprec.h>
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif

#include <wx/wx.h>

【讨论】:

  • 原代码有什么问题?除非 OP 以某种方式搞砸了目录,否则此代码是完全合法的。我还建议使用 "" 而不是 &lt;&gt; 用于 wx 标头。
  • 谢谢,不过我试过用"",还是不行。
  • 我也试过只写#include &lt;wx/wx.h&gt;,但还是不行。不过谢谢。
  • “还是不行”!!什么不起作用?您是否收到构建错误?这是什么?
  • 是的,我遇到了与我的问题相同的错误。
【解决方案2】:

wxWidgets 在 Unix 下提供wx-config 脚本,必须使用该脚本来获取使用该库编译和链接程序所需的选项。请运行wx-config --cxxflags 来获取您需要放入c_cpp_properties.json 的完整标志以及wx-config --libs 以获取链接器标志,您将需要使用这些标志来成功地进行程序链接,而不仅仅是编译。

【讨论】:

    【解决方案3】:

    作为开始使用 Linux 并想学习新库 id 的人推荐以下:

    1. www.wxwidget.org/download获取源代码
    2. 在某处解压
    3. 打开终端
    4. cd wxWidgets-3.1.4
    5. mkdir buildGTK
    6. cd buildGTK
    7. ../configure --enable-debug
    8. 制作
    9. cd 样本/最小
    10. 制作

    现在最后一个make 命令将显示您需要包含和链接的所有内容。您还将有一个示例代码,您可以在需要时参考。

    如果您不想从源代码构建库 - 请尝试以下操作

    1. 打开终端
    2. 输入“which wx-config”(不带引号)并按 ebter
    3. 运行“/path/to/wx-config --cxxflags”(不带引号)
    4. 运行“/path/to/wx-config --libs”(不带引号)

    在您的 IDE 中使用上述命令的输出。

    HTH。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多