【问题标题】:cmake seems to not pick up my -DCMAKE_CXX_FLAGScmake 似乎没有拿起我的 -DCMAKE_CXX_FLAGS
【发布时间】:2015-09-25 15:05:58
【问题描述】:

我有一个非常简单的设置。两个不同目录中的两个文件。

mkdir a
touch a/a.h
mkdir b
echo '#include <a/a.h>' > b/b.c

当我指定标题路径时,编译工作

cd b
gcc -c -I.. b.c
cd ..

好的,现在让我们将 cmake 添加到图片中。出于我的目的,我需要通过命令行指定标题搜索路径。考虑 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

我也尝试过提供绝对路径,但它对我不起作用。

【问题讨论】:

    标签: command-line cmake command-line-arguments include-path


    【解决方案1】:

    您的文件有.c 扩展名,您应该使用CMAKE_C_FLAGS

    在大多数情况下,您应该在 CMakeLists.txt 本身中指定所需的包含搜索路径:

    include_directories(..)
    

    【讨论】:

    • 对。我很困惑,因为我认为 CMAKE_CXX_FLAGS 也总是用于 .m 文件(然后我认为 CXX 表示任何 C,它不是)。根据情况,至少在 OS X 上,有时 cmake 将 c++ 用于 .m 文件,有时使用 cc。然后在一种情况下使用 CMAKE_CXX_FLAGS,在另一种情况下使用 CMAKE_C_FLAGS。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多