Ninja 不使用 CC 和 CXX?

Ninja doesn't use CC and CXX?

我正在用 Ninja 编译 Tesseract。 Clang 有一些链接问题,但 gcc 可以。我用 gcc 导出 CC 和 CXX,make -j8 运行良好。但是,Ninja(使用 /build 文件夹中的给定脚本)仍然使用 clang。如何使用 given .ninja 脚本在 Ninja 中指定编译器?

方法一:

ninja 是一个非常简单而强大的构建系统。您只需要查看 build.ninjarules.ninja 文件即可进行相关更改。

build.ninja 包含构建命令 运行 以便构建项目。

rules.ninja包含规则,CCCXX等标志。为了针对特定规则更改编译器,您需要在 rules.ninja 中为该目标 grep。您可能想更改几条规则,在这种情况下,您可以使用一些 bash 魔法。

方法2

总而言之,不建议更改 *.ninja 文件,因为它们是由 cmake 生成的。因此,您应该在构建目录的 CMakeCache.txt 文件中修改编译器路径(CMAKE_CXX_COMPILERCMAKE_C_COMPILER 标志)。

方法 3

完全删除构建目录,然后导出 CCCXX 标志或在调用 cmake 时传递 -DCMAKE_CXX_COMPILER:FILEPATH=/path/to/c++compiler -DCMAKE_C_COMPILER=/path/to/c-compiler。例如,

cmake -GNinja \
-DCMAKE_CXX_COMPILER:FILEPATH=/path/to/c++compiler \
-DCMAKE_C_COMPILER=/path/to/c-compiler \
... <other-flags>
<path-to-llvm-repo>

我推荐方法 3,YMMV。 hth.