【发布时间】:2016-01-24 17:48:35
【问题描述】:
我在 OS X Yosemite 上使用 CMake 3.3.2。如果我将框架路径放入include_directories,则生成的 Makefile 不包含该目录。一个简短的例子:
cmake_minimum_required(VERSION 3.0)
project(testproj)
include_directories(/System/Library/Frameworks/OpenGL.framework)
add_library(testlib test.c)
make 输出:
Scanning dependencies of target testlib
/Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/testlib.dir/build.make CMakeFiles/testlib.dir/build
[ 50%] Building C object CMakeFiles/testlib.dir/test.c.o
/Library/Developer/CommandLineTools/usr/bin/cc -o CMakeFiles/testlib.dir/test.c.o -c /Users/wrar/test/test.c
我预计include_directories 命令会对编译器行产生影响,并且由于官方OPENGL_INCLUDE_DIR 具有我在示例中传递的值,我希望它是一个正确的值。我错过了什么?
【问题讨论】:
-
include_directories应该在 add_library 之前在库中生效。 -
@Tsyvarev 没有任何区别,我已经更新了示例
-
target_include_directories适合你吗? -
过滤掉 OSX 框架路径是 CMake 实现的一部分:参见ENH: make sure default /System framework is not added with -F commit。我认为其背后的原因是您的 CMake 项目不应依赖于您使用的 OSX 版本/安装。
-
@Florian 好吧,这就是
FindOpenGL给我的