gpt4 book ai didi

c++ - 使用Cmake在Qt Creator中显示头文件

转载 作者:行者123 更新时间:2023-12-01 14:52:17 28 4
gpt4 key购买 nike

所以我只是用Qt Creator设置了一个新的Cmake项目。然后,我向项目中添加了一些类,Qt Creator正在显示文件,如下所示:

  • 项目文件夹
  • 项目名称
  • 源文件
  • 头文件

  • 现在,当我仅添加头文件(“新建文件”>“C++头文件”)(“ ”,而没有“”作为源文件)时,头文件未显示在Qt Creator显示的项目树中(我无法在“头文件”下找到它) 。我可以看到正在创建头文件(使用Ctrl + K),但未在“头文件”下显示。
    我读了另一个问题 here,但提供的主要答案并未真正回答问题。

    我的 CMakeslist.txt如下所示:
    cmake_minimum_required(VERSION 3.5)

    project(TEST LANGUAGES CXX)

    set(CMAKE_INCLUDE_CURRENT_DIR ON)

    set(CMAKE_AUTOUIC ON)
    set(CMAKE_AUTOMOC ON)
    set(CMAKE_AUTORCC ON)

    set(CMAKE_CXX_STANDARD 11)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)

    # QtCreator supports the following variables for Android, which are identical to qmake Android variables.
    # Check http://doc.qt.io/qt-5/deployment-android.html for more information.
    # They need to be set before the find_package(Qt5 ...) call.

    #if(ANDROID)
    # set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
    # if (ANDROID_ABI STREQUAL "armeabi-v7a")
    # set(ANDROID_EXTRA_LIBS
    # ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libcrypto.so
    # ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libssl.so)
    # endif()
    #endif()


    find_package(Qt5 COMPONENTS Core Quick REQUIRED)

    if(ANDROID)
    add_library(TEST SHARED
    main.cpp
    wetcanvas.cpp
    wetrenderer.cpp
    qml.qrc
    )
    else()
    add_executable(TEST
    main.cpp
    wetcanvas.cpp
    wetrenderer.cpp
    qml.qrc
    )
    endif()

    target_compile_definitions(TEST
    PRIVATE $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_QML_DEBUG>)
    target_link_libraries(TEST
    PRIVATE Qt5::Core Qt5::Quick)

    最佳答案

    您需要将标题添加到CMake的源列表中。
    就你而言

    if(ANDROID)
    add_library(TEST SHARED
    main.cpp
    wetcanvas.cpp
    wetrenderer.cpp
    MyHeader.h
    qml.qrc
    )
    else()
    add_executable(TEST
    main.cpp
    wetcanvas.cpp
    wetrenderer.cpp
    MyHeader.h
    qml.qrc
    )
    endif()

    小费:
    您可能需要考虑将源放在自己的变量中,如下所示:
          set(COMMON_SRC
    main.cpp
    wetcanvas.cpp
    wetrenderer.cpp
    MyHeader.h
    qml.qrc
    )
    set(ANDROID_SRC
    AndroidSpecific.cpp
    AndroidSpecific.h
    )

    if(ANDROID)
    add_library(TEST SHARED
    ${COMMON_SRC}
    ${ANDROID_SRC}
    )
    else()
    add_executable(TEST
    ${COMMON_SRC}
    )
    endif()

    当项目变得更加复杂时,它会有所返回。

    关于c++ - 使用Cmake在Qt Creator中显示头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62429286/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com