我有两个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
为什么?我该如何解决这个问题?
答案 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
使用正确的包含路径。