2017-07-20 4 views
6

Ich habe ein Header-only-Bibliotheksprojekt. In meinem CMakeLists.txt verwende ich INTERFACE Bibliothek TypCLion und add_library (Zielschnittstelle)

ich dieses Projekt in CLION importieren wollte, aber wenn ich einen der Header-Dateien öffnen die IDE beklagt, dass diese Datei gehört nicht zu jedem Projektziel

Gibt es also eine Möglichkeit, ein Header-Only-Projekt in CLion zu entwickeln?

Test-Projekt-Layout ist ziemlich einfach:

% tree foo 
foo 
├── CMakeLists.txt 
└── foo.hpp 

Und CMakeLists Inhalt ist

cmake_minimum_required(VERSION 3.8) 
project(foo) 

add_library(foo INTERFACE) 
target_include_directories(foo INTERFACE ${PROJECT_SOURCE_DIR}) 
target_sources(foo INTERFACE ${PROJECT_SOURCE_DIR}/foo.hpp) 

CLION 2.017,2 + CMake 3.8

+0

Die Verwendung von 'target_sources' sollte das Problem lösen. Ich hatte das gleiche Problem und konnte es lösen, indem ich 'target_sources' hinzufügte. Ich benutze '$ {CMAKE_CURRENT_SOURCE_DIR}', das zu dem Ort führt, an dem sich die 'CMakeLists.txt' befindet. Ich gebe dann den Speicherort relativ zu diesem Verzeichnis an, etwa wie folgt: '$ {CMAKE_CURRENT_SOURCE_DIR}/Pfad/zu/foo.hpp' – lanoxx

Antwort

1

ich das gleiche Problem hatte meine CLION nach der Aktualisierung. Sie sind sehr nah dran, müssen aber noch eine weitere Zeile hinzufügen:

add_library(target INTERFACE) 
target_sources(target INTERFACE ${my_header_list}) 
target_include_directories(target INTERFACE ${CMAKE_SOURCE_DIR}) 

Dies kann je nach Projektlayout anders aussehen. Mine sieht wie folgt aus:

|-- myLib 
    |-- CMakeLists.txt 
    |-- myLib 
    |-- foo.hpp 
    |-- bar.hpp 
    |-- etc... 

ich zu dieser Lösung bekam this durch das Lesen.

+0

Ich habe diese Zeile" target_include_directories " – witosx

+0

Oh, Entschuldigung, du hast das nicht erwähnt. Könnten Sie Ihre Frage bearbeiten, um genau das zu setzen, was Sie haben? – moarCoffee