cmake 似乎没有接我的 -DCMAKE_CXX_FLAGS
cmake seems to not pick up my -DCMAKE_CXX_FLAGS
我有一个非常简单的设置。两个单独目录中的两个文件。
mkdir a
touch a/a.h
mkdir b
echo '#include <a/a.h>' > b/b.c
编译工作,当我指定 header 路径时
cd b
gcc -c -I.. b.c
cd ..
OK 现在让我们给图片加上cmake。出于我的目的,我需要通过 command-line 指定 header 搜索路径。考虑 CMakeLists.txt 只读。
cat<<EOF > b/CMakeLists.txt
cmake_minimum_required (VERSION 3.0)
project (b)
add_library(b
b.c
)
EOF
mkdir b/build
cd b/build
cmake -DCMAKE_CXX_FLAGS=-I.. ..
make VERBOSE=1
但是 make 失败了,我在 cc
命令行中没有看到 -I.. 规范。
[ 50%] Building C object CMakeFiles/b.dir/b.c.o
/Applications/Xcode.app/Contents/Developer/Toolchains /XcodeDefault.xctoolchain/usr/bin/cc -o CMakeFiles/b.dir/b.c.o -c /tmp/b/b.c
/tmp/b/b.c:1:10: fatal error: 'a/a.h' file not found
我也试过给出绝对路径,但它对我不起作用。
您的文件有 .c
扩展名,您应该使用 CMAKE_C_FLAGS
。
并且在大多数情况下,您应该在 CMakeLists.txt
本身中指定所需的包含搜索路径:
include_directories(..)
我有一个非常简单的设置。两个单独目录中的两个文件。
mkdir a
touch a/a.h
mkdir b
echo '#include <a/a.h>' > b/b.c
编译工作,当我指定 header 路径时
cd b
gcc -c -I.. b.c
cd ..
OK 现在让我们给图片加上cmake。出于我的目的,我需要通过 command-line 指定 header 搜索路径。考虑 CMakeLists.txt 只读。
cat<<EOF > b/CMakeLists.txt
cmake_minimum_required (VERSION 3.0)
project (b)
add_library(b
b.c
)
EOF
mkdir b/build
cd b/build
cmake -DCMAKE_CXX_FLAGS=-I.. ..
make VERBOSE=1
但是 make 失败了,我在 cc
命令行中没有看到 -I.. 规范。
[ 50%] Building C object CMakeFiles/b.dir/b.c.o
/Applications/Xcode.app/Contents/Developer/Toolchains /XcodeDefault.xctoolchain/usr/bin/cc -o CMakeFiles/b.dir/b.c.o -c /tmp/b/b.c
/tmp/b/b.c:1:10: fatal error: 'a/a.h' file not found
我也试过给出绝对路径,但它对我不起作用。
您的文件有 .c
扩展名,您应该使用 CMAKE_C_FLAGS
。
并且在大多数情况下,您应该在 CMakeLists.txt
本身中指定所需的包含搜索路径:
include_directories(..)