在CLion中,仅头文件库:文件"不属于任何项目目标,代码洞察功能可能无法正常工作"

xax*_*xon 44 c++ cmake header-only clion

我有一个使用cmake命令设置的仅头文件库项目:

add_library(my_library INTERFACE)
Run Code Online (Sandbox Code Playgroud)

而且我还补充道

target_sources(my_library INTERFACE ${MY_LIRBARY_HEADER_FILES})
Run Code Online (Sandbox Code Playgroud)

但是当我打开一个源文件时,我收到警告:

此文件不属于任何项目目标,代码洞察功能可能无法正常工作

而且我在代码完成等方面失去了很多功能.

设置它的正确方法是什么,以便CLion在仅头文件库中提供其常用功能?

sja*_*rni 70

小背景

我遇到了同样的问题,尽管该项目不仅仅是标题,然而,文件inc夹中的打开文件抛出上述警告,即使CMake文件清楚地标记了该文件夹include_directory.

*.hpp文件不属于$ {SOURCE}

include_directories("${PROJECT_SOURCE_DIR}/inc/")
add_subdirectory(src)
add_executable(${EXECUTABLE_NAME} main.cpp ${SOURCE})
Run Code Online (Sandbox Code Playgroud)

由于这是一个完全有效的CMake文件,并且将包含文件添加到源文件不是惯用的,我不想修改CMake文件.

解决方案

正如官方JetBrains论坛所述,CMake文件确实有效,并且由于CLion无法正确索引头文件而显示警告.从链接中提取的建议解决方法是右键单击文件夹和Mark directory as| Library Files/Project Sources and Headers.

因此,此标头不包含在可执行文件中,并且CLion会通知您某些代码洞察功能可能无法正常工作.作为解决方法,您可以使用"将目录标记为"库文件/项目源和文件夹的标题.

  • 这不适用于 clion 2022.2.4,您提到的选项甚至不存在 (4认同)