我有一个使用/usr/include
中安装的标头的cmake项目,我们称之为freeglut.h
。当我使用find_package(GLUT)
时,我${GLUT_INCLUDE_DIR}
指向/usr/include
。一切都很好。
现在,我正在添加CUDA,它会在find_package(CUDA)
中包含的一个路径中保留这些和其他标头的副本。通常情况下,我会在${GLUT_INCLUDE_DIR}
之前${CUDA_INCLUDE_DIRS}
放置include_directories()
来解决此问题。但是,在Unix系统上,cmake在UnixPaths.cmake
中维护一个名为list
的{{1}},其中包含CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES
,并且显然保持cmake不会为编译器发出/usr/include
个参数对于目录-I<dir>
,意味着编译器首先搜索CUDA路径,并使用那里找到的/usr/include
标头。
我尝试使用freeglut.h
从list(REMOVE_ITEM ...
列表中删除/usr/include
,但这并未改变cmake所做的编译器命令。
我当然可以开始使用CUDA安装,删除我不想要的标头,或者修改CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES
变量,但有一种干净的方法告诉cmake首先使用系统头文件,如果他们存在?