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.
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会通知您某些代码洞察功能可能无法正常工作.作为解决方法,您可以使用"将目录标记为"库文件/项目源和文件夹的标题.