我正在读一个大项目的cmakelist文件,对target_include_directories和include_directories的用法感到困惑。
include_directories应该能够将所有头文件添加到编译器搜索的路径中。但我仍然在子目录的cmakelist文件中看到一些target_include_directories,它们指定了特定目标的一些包含路径。
有人能解释一下这两个词的用法吗?就我而言,将头文件的所有路径添加到include_directories中应该就足够了。
发布于 2018-08-22 22:03:26
include_directories适用于特定CMakeLists.txt文件中的所有目标。例如,假设你有
include_directories( ../include
${SOME_OTHER_PATH}/include
)
add_library(math ${MATH_SOURCES})
target_include_directories(math
math_include
)
add_executable(calculator ${MYCALCULATOR_SOURCES})
target_include_directories(calculator
calc_include
)calculator是一个可执行目标,而math是在同一CMakeLists.txt中定义的库目标。文件夹../include和${SOME_OTHER_PATH}/include对两个都可见。这意味着cmake会在编译源代码时将选项-I../include -I<expanded-some-other-path>/include添加到这两个目标中。
对于target_include_directories,包含路径calc_include仅适用于calculator目标,math_include仅适用于math目标。正如所指定的,math_include和calc_include通常是位于包含CMakeLists.txt文件的同一文件夹中的子文件夹。
https://stackoverflow.com/questions/51960885
复制相似问题