繁体   English   中英

QtCreator CMake项目 - 如何显示所有项目文件

[英]QtCreator CMake project - how to show all project files

我使用QtCreator打开CMake项目。 除了CMakeLists.txt之外的一些目录仅包含头文件* .h,对于那些目录,项目树视图中的QtCreator仅显示CMakeLists.txt。 如何解决? 我需要查看来自QtCreator的所有项目文件。

将项目视为文件系统根本不是解决方案,因为例如项目编辑器设置不适用。 我不喜欢将标头添加到可执行目标,因为它们实际上并不属于那里。 你有效地削弱了项目文件,以便与一个特定的IDE很好地协作......不是很好。 更清洁的选择恕我直言:

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

作为奖励,您可以将您的包含显示在单独的文件夹中。 (借鉴自https://cmake.org/pipermail/cmake/2012-August/051811.html

我建议你将项目视图切换到文件系统。 这将显示一个视图,您可以在其中查看所需的任何文件:

在此输入图像描述

如果您仍然需要“项目”模式,则可能需要通过单击第二个向右按钮将项目视图拆分为两个。

您应该将头文件添加到源文件列表中: 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(至少使用QtCreator和Visual Studio进行测试)。

可以在这里找到: https//github.com/sauter-hq/cm​​ake-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中的任何目标,添加以下调用(可以在所有add_subdirectory之后在最顶层的CMakeLists.txt中进行:

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

您可以尝试CMakeProjectManager2 代码显示已传播到上游的所有文件作为概念证明。 应用了概念但由于某些原因,代码无法按原样应用。 所以,上游的简单等待功能。

有一个关于此问题的已关闭的错误报告: CMake项目显示没有文件

在这种特殊情况下,问题在于选择的生成器Ninja ,QtCreator没有很好的支持。

请将其更改为“CodeBlocks - Ninja”。 Creator需要CodeBlocks额外的生成器。

当鼠标悬停在工具包上时,您应该会看到一个警告(并且工具包的名称前面应该有一个警告图标)。

使用CodeBlocks - 忍者也为我解决了它。

总的来说,尝试一些发电机可能会有所帮助......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM