如何在cmake中正确使用include_directories?

时间:2019-01-02 12:45:37

标签: c++ cmake

我有两个cmake文件:

CMakeLists.txt:

cmake_minimum_required(VERSION 3.13)
project(as_math_engine)

set(CMAKE_CXX_STANDARD 14)

include_directories(include/as_math_engine)
add_library(as_math_engine evaluable.h)
add_subdirectory(tests)

tests / CMakeLists.txt:

include_directories(libs)
add_executable(as_math_engine_tests src/main.cpp)

我有这个include/as_math_engine/evaluable.h文件,但是,CMake告诉我:

  

找不到源文件:evaluable.h

为什么?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

include_directories()最好用于为项目中的多个目标设置包含路径,target_include_directories()通常是首选。

如果as_math_engine将成为仅标头的库,可能有更好的设置方法。

您还需要使用add_library(as_math_engine include/as_math_engine/evaluable.h),因为add_library()不会搜索文件。

Header Only Library显示了如何进行设置并使用它来避免此类问题。

或者删除include_directories()并使用target_include_directories(as_math_engine_tests PRIVATE "${CMAKE_SOURCE_DIR}/include/as_math_engine" libs),以便as_math_engine_tests使用正确的包含路径。