programing

QtCreator CMake 프로젝트 - 모든 프로젝트 파일을 표시하는 방법

oldcodes 2023. 10. 11. 20:58
반응형

QtCreator CMake 프로젝트 - 모든 프로젝트 파일을 표시하는 방법

저는 QtCreator를 사용하여 CMake 프로젝트를 엽니다.CMakeLists 이외의 일부 디렉토리.txt에는 해당 디렉토리에 대한 헤더 파일 *.hand만 포함되어 있습니다. 프로젝트 트리 보기의 QtCreator에는 CMakeLists만 표시됩니다.txt. 어떻게 고치죠?QtCreator의 모든 프로젝트 파일을 봐야 합니다.

예를 들어 프로젝트 편집기 설정이 적용되지 않으므로 프로젝트를 파일 시스템으로 보는 것은 전혀 해결책이 아닙니다.그리고 실행 가능한 대상에 헤더를 추가하는 것을 좋아하지 않습니다. 왜냐하면 헤더는 실제로 거기에 속하지 않기 때문입니다.프로젝트 파일을 하나의 특정 IDE로 잘 작동하도록 사실상 무력화 시킵니다. 좋지 않습니다.클리너 옵션(IMHO)은 다음과 같습니다.

FILE(GLOB_RECURSE LibFiles "include/*.hpp")
add_custom_target(headers SOURCES ${LibFiles})

보너스로 별도의 폴더에 포함된 내용이 표시됩니다. (https://cmake.org/pipermail/cmake/2012-August/051811.html) 에서 borrowed합니다.

프로젝트 뷰를 파일 시스템으로 전환하는 것을 제안합니다.원하는 파일을 볼 수 있는 보기가 표시됩니다.

enter image description here

프로젝트 모드를 원하는 경우 오른쪽 두 번째 단추를 클릭하여 프로젝트 보기를 두 개로 분할할 수 있습니다.

원본 파일 목록에 헤더 파일을 추가해야 합니다.add_executable(${Executable} ${Sources} ${headers})

사용가능GLOB_RECURSE헤더 파일이 많은 경우:

FILE(GLOB_RECURSE INC_ALL "headers/*.h")
include_directories("headers")
add_executable(main "main.cpp" ${INC_ALL})

CMake를 다시 실행하는 것을 잊지 마십시오(Build > Run CMake).

같은 질문을 하는 또 다른 스레드를 기반으로 모든 IDE(최소한 Qt Creator 및 Visual Studio에서 테스트)에서 작동하는 문제에 대한 일반적인 해결책을 찾았습니다.

여기에서 확인할 수 있습니다. https://github.com/sauter-hq/cmake-ide-support

# \brief adds for the given target a fake executable targets which allows all
#        headers and symbols to be shown in IDEs.
# \param target_name Which target properties should be added to the IDE support target.
function(target_add_ide_support target_name)
  if (NOT TARGET ${target_name})
    message(FATAL_ERROR "No target defined with name ${target_name}, cannot target_add_ide_support it.")
  endif()

  set (target_for_ide "${target_name}_ide_support")
  if (NOT TARGET ${target_for_ide})
      file(GLOB_RECURSE target_for_ide_srcs "*.h" "*.hpp" "*.hxx" "*.c" "*.cpp" "*.cxx")
      add_executable(${target_for_ide} ${target_for_ide_srcs})
      set_target_properties(${target_for_ide} PROPERTIES EXCLUDE_FROM_ALL 1 EXCLUDE_FROM_DEFAULT_BUILD 1)
  endif()

  get_target_property(dirs ${target_name} INCLUDE_DIRECTORIES)
  target_include_directories(${target_for_ide} PRIVATE ${dirs})

endfunction(target_add_ide_support)

사용은 CMakeLists에 있는 대상에 대해 다음 호출을 추가합니다(맨 위에 있는 CMakeLists에서 호출할 수 있습니다).add_subdirectory 끝에 txt:

include(add_ide_support.cmake)
target_add_ide_support(some-target)

CMakeProjectManager2를 사용해 볼 수 있습니다.업스트림에 이미 전파된 모든 파일을 개념 증명으로 표시하는 코드입니다.개념은 적용되었지만 코드는 어떤 이유로 그대로 적용할 수 없습니다.업스트림에서의 간단한 대기 기능.

이 문제에 대한 폐쇄된 버그 보고서가 있습니다. CMake 프로젝트에 파일이 표시되지 않습니다.

그 경우 문제는 Qt Creator에서 잘 지원하지 않는 선택된 발전기 Ninja에 있었습니다.

'코드블록 - 닌자'로 바꿔주세요.CodeBlocks 추가 생성기가 필요합니다.

키트를 호버링할 때 해당 경고가 표시되어야 합니다(키트 이름 앞에 경고 아이콘이 표시되어야 함).

코드블록 사용하기 - 닌자가 나도 해결해 줬습니다.

전체적으로 몇 개의 발전기를 사용해 보는 것이 도움이 될 것입니다.

언급URL : https://stackoverflow.com/questions/28384935/qtcreator-cmake-project-how-to-show-all-project-files

반응형