In CLion, nur Header-Bibliothek:Datei gehört zu keinem Projektziel, Code-Insight-Funktionen funktionieren möglicherweise nicht richtig

In CLion, nur Header-Bibliothek:Datei gehört zu keinem Projektziel, Code-Insight-Funktionen funktionieren möglicherweise nicht richtig

Kleiner Hintergrund

Ich hatte das gleiche Problem, obwohl das Projekt nicht nur Header war, dennoch die offenen Dateien von inc -Ordner die oben genannte Warnung ausgegeben, obwohl die CMake-Datei diesen Ordner eindeutig als include_directory gekennzeichnet hat .

*.hpp-Dateien gehören nicht zu ${SOURCE}

include_directories("${PROJECT_SOURCE_DIR}/inc/")
add_subdirectory(src)
add_executable(${EXECUTABLE_NAME} main.cpp ${SOURCE})

Da dies eine vollkommen gültige CMake-Datei ist und das Hinzufügen der Include-Dateien zu Quelldateien nicht idiomatisch ist, wollte ich die CMake-Datei nicht ändern.

Die Lösung

Wie im offiziellen JetBrains-Forum beschrieben, ist die CMake-Datei tatsächlich gültig und die Warnung wird angezeigt, weil CLion Header-Dateien nicht richtig indizieren kann. Die aus dem Link extrahierte vorgeschlagene Problemumgehung besteht darin, mit der rechten Maustaste auf den Ordner und Mark directory as zu klicken | Library Files /Project Sources and Headers .


Clion nimmt Informationen über Quelldateien aus dem CMake-Build-System. Wenn Sie eine CPP-Datei zur Quellenliste hinzufügen, teilt CMake automatisch Header mit demselben Namen mit. Wenn sich die cpp/h-Namen unterscheiden (oder Sie überhaupt keine cpp-Datei haben), sollten Sie den Header manuell einfügen.

set(Sources my_lib.cpp)
set(Headers header_of_my_lib.h)
add_executable(superlib ${Sources} ${Headers})

Wenn Sie keine ausführbare Datei haben, können Sie die letzte Zeile weglassen, CLion wird immer noch über Dateien Bescheid wissen


No