2017-07-20 28 views
6

私はヘッダーのみのライブラリプロジェクトを持っています。私のCMakeLists.txtで私はCLionにこのプロジェクトをインポートしたいCLIONとadd_library(ターゲットインターフェイス)

インタフェースライブラリのタイプを使用しますが、私が開いたときに、ヘッダーのいずれかがIDEは、は、このファイルは、任意のプロジェクトのターゲットに属していないと文句を言いファイル

これで、CLionでヘッダーのみのプロジェクトを開発する方法はありますか?

テストプロジェクトのレイアウトは非常に単純です:

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

そしてCMakeLists内容は、私は私のCLionをアップグレードした後、同じ問題を持っていた

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 + CMakeの3.8

+0

'target_sources'を使用すると問題は解決します。私は同じ問題を抱えていて、 'target_sources'を追加することでそれを解決することができました。 '$ {CMAKE_CURRENT_SOURCE_DIR}'を使用しています。これは 'CMakeLists.txt'がある場所に解決されます。 '$ {CMAKE_CURRENT_SOURCE_DIR}/path/to/foo.hpp'のようなディレクトリに相対的な位置を指定します。 – lanoxx

答えて

1

です。非常に近いですが、もう1行追加する必要があります。

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

これはプロジェクトのレイアウトによって異なる場合があります。鉱山は、次のようになります。

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

私はthisを読み取ることによって、この溶液になりました。

+0

私はこの" target_include_directories "行を持っています – witosx

+0

ああ、申し訳ありません、あなたはそれを言及しませんでした。あなたの質問を編集して、あなたが持っているものを正確に入れることができますか? – moarCoffee