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.ninja
和 rules.ninja
文件即可进行相关更改。
build.ninja
包含构建命令 运行 以便构建项目。
rules.ninja
包含规则,CC
,CXX
等标志。为了针对特定规则更改编译器,您需要在 rules.ninja
中为该目标 grep
。您可能想更改几条规则,在这种情况下,您可以使用一些 bash 魔法。
方法2
总而言之,不建议更改 *.ninja
文件,因为它们是由 cmake 生成的。因此,您应该在构建目录的 CMakeCache.txt
文件中修改编译器路径(CMAKE_CXX_COMPILER
、CMAKE_C_COMPILER
标志)。
方法 3
完全删除构建目录,然后导出 CC
和 CXX
标志或在调用 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.
我正在用 Ninja 编译 Tesseract。 Clang 有一些链接问题,但 gcc 可以。我用 gcc 导出 CC 和 CXX,make -j8
运行良好。但是,Ninja(使用 /build
文件夹中的给定脚本)仍然使用 clang。如何使用 given .ninja
脚本在 Ninja 中指定编译器?
方法一:
ninja 是一个非常简单而强大的构建系统。您只需要查看 build.ninja
和 rules.ninja
文件即可进行相关更改。
build.ninja
包含构建命令 运行 以便构建项目。
rules.ninja
包含规则,CC
,CXX
等标志。为了针对特定规则更改编译器,您需要在 rules.ninja
中为该目标 grep
。您可能想更改几条规则,在这种情况下,您可以使用一些 bash 魔法。
方法2
总而言之,不建议更改 *.ninja
文件,因为它们是由 cmake 生成的。因此,您应该在构建目录的 CMakeCache.txt
文件中修改编译器路径(CMAKE_CXX_COMPILER
、CMAKE_C_COMPILER
标志)。
方法 3
完全删除构建目录,然后导出 CC
和 CXX
标志或在调用 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.