【发布时间】:2018-02-24 09:56:48
【问题描述】:
我正在学习有关 CMake 的教程,但我无法理解在某一时刻使用“include_directories”命令的必要性。
让我先解释一下这个项目:
在我的工作目录中,我有: - 一个 main.cpp 函数、一个 CMakeLists.txt(主要的)、一个配置文件、一个“MathFunction”目录和一个“build”目录
在 MathFunction 目录中,我有: - 将由主文件调用的 CMakeLists.txt 文件 - 一个文件“mysqrt.cxx”,其中包含将在“main.cpp”应用程序中使用的函数的实现 - 包含该函数原型的“MathFunctions.h”头文件
在“MathFunction”目录的 CMakeLists 中,我正在使用“mysqrt.cxx”中的代码创建一个库,如下所示:
add_library(MathFunctions mysqrt.cxx)
这个 sn-p 是我主要 CMake 代码的一部分:
# add the MathFunctions library?
#
if (USE_MYMATH)
include_directories ("${PROJECT_SOURCE_DIR}/MathFunctions") # WHY DO WE NEED THIS
add_subdirectory (MathFunctions)
set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions)
endif (USE_MYMATH)
add_executable(Tutorial tutorial.cxx)
target_link_libraries (Tutorial MathFunctions)
现在我不明白为什么我还需要添加“include_directories”命令才能使用该库?最后一个命令'target_link_libraries'将已经创建的可执行文件和库链接在一起,这样就不需要include_directories,这还不够吗?
感谢您的阅读,如果我没有很好地解释它,我很抱歉,但我希望您能理解我的意思:D
【问题讨论】: