Docker中cmake使用-j参数构建报错,主机环境正常问题排查
Docker中CMake -j参数报错的问题解决
问题根源
你混淆了CMake配置阶段和构建阶段的参数:-j是构建命令cmake --build的并行编译参数,不是cmake -S -B配置命令的参数。主机环境能运行可能是因为命令解析的巧合,但Docker默认使用的sh shell会严格解析参数,导致CMake把-j16当成配置阶段的未知参数报错。
正确写法
分两步执行配置与构建:
- 配置CMake:
RUN cmake -S . -B build - 并行构建项目:
RUN cmake --build build -j$(nproc)
兼容优化(可选)
如果需要合并成一行,或者要兼容不支持nproc的旧shell,可以写成:
RUN cmake -S . -B build && cmake --build build -j$(getconf _NPROCESSORS_ONLN)
内容的提问来源于stack exchange,提问作者Bertelemy
相关产品推荐
相关产品推荐

