2017-07-20 54 views
6

Mam projekt biblioteki tylko nagłówkowej. W moim CMakeLists.txt używam interfejsu typu bibliotekiCLION i add_library (target INTERFACE)

chciałem zaimportować ten projekt do Clion, ale kiedy otworzyć dowolny nagłówku plików IDE narzeka, że ​​plik ten nie należy do żadnej cel projektu

Czy istnieje sposób opracowania projektu tylko nagłówkowego w CLion?

układ projekt testowy jest dość prosta:

zawartość
% tree foo 
foo 
├── CMakeLists.txt 
└── foo.hpp 

I CMakeLists jest

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 2017,2 + CUpewnij 3,8

+0

Użycie 'target_sources' powinno rozwiązać problem. Miałem ten sam problem i udało mi się go rozwiązać, dodając 'target_sources'. Używam '$ {CMAKE_CURRENT_SOURCE_DIR}', które rozstrzyga do lokalizacji, w której znajduje się 'CMakeLists.txt'. Następnie określę lokalizację względem tego katalogu, coś w stylu: $ {CMAKE_CURRENT_SOURCE_DIR}/path/to/foo.hpp' – lanoxx

Odpowiedz

1

miałem ten sam problem po uaktualnieniu moje Clion. Jesteś bardzo blisko, ale musisz dodać jeszcze jedną linię:

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

Może to wyglądać inaczej w zależności od układu projektu. Kopalnia wygląda następująco:

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

mam do tego rozwiązania, czytając this.

+0

Mam tę linię "target_include_directories" – witosx

+0

Och, przepraszam, nie wspomniałeś o tym. Mógłbyś edytować swoje pytanie, by umieścić dokładnie to, co masz? – moarCoffee