Скомпилируйте проект Qt на VSCode с CMake - PullRequest
0 голосов
/ 29 апреля 2020

Мой базовый c проект скомпилируется, просто наследуя QMainWindow и показывая его, но все включения отображаются красным, и у меня возникает следующая ошибка, даже если проект компилируется:

Невозможно выполнить откройте исходный файл "QtWidgets / qtwidgetsglobal.h" (зависимость от QMainWindow ")

IntelliSense VSCode также не работает.

Я скачал Qt-5.12 из git РЕПО. Я скомпилировал и затем установил в /usr/local/Qt-5.12/.

Мои c_cpp_properties. json:

    "configurations": [
    {
        "name": "Mac",
        "includePath": [
            "${workspaceFolder}/**",
            "/usr/local/Qt-5.12/lib",
            "/usr/local/Qt-5.12/lib/QtWidgets.framework/Headers",
            "/usr/local/Qt-5.12/lib/QtGui.framework/Headers",
            "/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/OpenGL.framework/Headers",
            "/usr/local/Qt-5.12/lib/QtCore.framework/Headers",
            "/usr/local/Qt-5.12/./mkspecs/macx-clang"
        ],
        "defines": [],
        "macFrameworkPath": [
            "/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks"
        ],
        "compilerPath": "/usr/bin/clang",
        "cStandard": "c11",
        "cppStandard": "c++17",
        "intelliSenseMode": "clang-x64",
        "configurationProvider": "vector-of-bool.cmake-tools"
    }
],
"version": 4
}

вот дерево моего проекта:

enter image description here

мой верхний уровень CMakeLists.txt

cmake_minimum_required(VERSION 3.10)

project(irc_client VERSION 1.0)

set(CMAKE_PREFIX_PATH "/usr/local/Qt-5.12/")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

find_package(Qt5 COMPONENTS Core Widgets REQUIRED)

add_subdirectory(sources)

мои источники / CMakeLists.txt:

add_executable(${PROJECT_NAME} main.cpp irc_client.cpp)

target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Widgets)
target_include_directories(${PROJECT_NAME} PUBLIC 
${irc_client_SOURCE_DIR}/headers/)

Как сделать я настроил vscode с помощью Qt и CMAKE, чтобы Intellisense работал, пожалуйста? Что я делаю здесь не так? Я не могу найти свою точную проблему, и я знаю, что QtCreator лучше кодировать приложения Qt, но все же я хочу попытаться выяснить, почему это не работает. Потому что жалуется, что не может найти включения, но все равно компилирует ...

спасибо

1 Ответ

0 голосов
/ 29 апреля 2020

Ок, кажется, я нашел решение. Вот как выглядит мой c_cpp_properties. json:

{
"configurations": [
    {
        "name": "Mac",
        "macFrameworkPath": [    
            "/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk\
                 /System/Library/Frameworks",
            "/System/Library/Frameworks"
        ],
        "intelliSenseMode": "clang-x64",
        "compilerPath": "/usr/bin/clang++",
        "cStandard": "c11",
        "cppStandard": "c++17",
        "compileCommands": "${workspaceFolder}/build/compile_commands.json",
        "browse": {
            "path": ["/usr/local/Qt-5.12/lib"],
            "limitSymbolsToIncludedHeaders": true,
            "databaseFilename": "${workspaceFolder}/.vscode/browse.vc.db"
          }
    }
],
"version": 4
}

часть просмотра делает работу, которую я думаю, и я также добавил часть "compileCommands", чтобы указать на мой файл сгенерированных cmake команд для компиляции.

Пока что больше нет ошибок в работе incude и intellisense.

Надеюсь, что это послужит другим.

...