CLion和add_library(目标接口)

wit*_*osx 6 cmake clion

我有一个仅限标题的库项目.在我的CMakeLists.txt中,我使用INTERFACE库类型

我想将此项目导入CLion,但是当我打开任何头文件时,IDE会抱怨此文件不属于任何项目目标

那么有没有办法在CLion中开发一个仅限标题的项目?

测试项目布局非常简单:

% tree foo
foo
??? CMakeLists.txt
??? foo.hpp
Run Code Online (Sandbox Code Playgroud)

而CMakeLists的内容是

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)
Run Code Online (Sandbox Code Playgroud)

CLION 2017.2 + CMake 3.8

moa*_*fee 2

升级 CLion 后我遇到了同样的问题。您非常接近,但需要再添加一行:

add_library(target INTERFACE)
target_sources(target INTERFACE ${my_header_list})
target_include_directories(target INTERFACE ${CMAKE_SOURCE_DIR})
Run Code Online (Sandbox Code Playgroud)

根据您的项目布局,这可能看起来有所不同。我的看起来像这样:

|-- myLib
  |-- CMakeLists.txt
  |-- myLib
    |-- foo.hpp
    |-- bar.hpp
    |-- etc...
Run Code Online (Sandbox Code Playgroud)

我通过阅读this找到了这个解决方案。