从CMake“INCLUDE_DIRECTORIES”附带的目录中排除子目录

时间:2014-08-06 09:36:04

标签: cmake

我在自己的项目中使用了gtest附带的开源库。由于我在自己的库中使用gmock,因此在从其他开源库中包含gtest时,编译gmock似乎存在问题。

有没有办法不包含该库中的子目录?

在开源库的include目录中有两个文件夹:

include/
  gtest   MRT

我只想包含文件夹" MRT" (如果我使用include_directories {path_to_os_lib / include / MRT}编译将失败,因为库内部使用包括" #include" MRT / foo / bar.hpp"")等的语句

1 个答案:

答案 0 :(得分:3)

您可以将MRT目录“安装”(简单地复制)到repo的另一部分,并将其添加到INCLUDE_DIRECTORIES。假设您在子目录subrepo中拥有MRT仓库:

MESSAGE("Copying MRT directory...")
EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/subrepo/MRT" "${CMAKE_CURRENT_SOURCE_DIR}/include/MRT")
INCLUDE_DIRECTORIES(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/include")

不要使用任何shell / batch命令,因为它们不可移植。因为这个cmake支持-E许多命令。