Cygwin+conan+cmake:如何强制使用Ninja?

v.v*_*v.v 1 cygwin cmake conan

我安装了 Cygwin,其中包含pythoncmake和 的软件包Ninja。然后我安装了柯南(按照推荐 - 使用pip)。现在,当我尝试用最少的柯南时conanfile.txt

[requires]
bzip2/1.0.8
Run Code Online (Sandbox Code Playgroud)

它失败了

CMake 错误:无法创建命名生成器 MinGW Makefiles

(完整日志粘贴在下面)。

我有避免 MinGW 的原因,所以问题是:如何强制 conan+cmake 使用 ninja 而不是“MinGW Makefiles”?

尝试按照此处的建议进行设置,但没有成功。

$ conan install -pr clang . --build=bzip2 配置: [设置] arch=x86_64 arch_build=x86_64 build_type=Release compiler=clang compiler.cppstd=17 compiler.libcxx=libc++ compiler.version=14 os=Windows os_build=Windows [选项] [build_requires] [ CONAN_CMAKE_GENERATOR=Ninja bzip2/1.0.8:从源 conanfile.txt 强制构建:从“conancenter”安装包要求 bzip2/1.0.8 - 从“conancenter”缓存 cmake/3.24.0 - 缓存包 bzip2/1.0.8 :fa16798f9daa5b15fd5cb2fcd5a5d39b602801a0 - 构建 cmake/3.24.0:0a420ff5c47119e668867cdb51baff0eca1fdb68 - 缓存

正在安装(下载、构建)二进制文件... bzip2/1.0.8:警告:构建文件夹已脏,将其删除:/home/user/.conan/data/bzip2/1.0.8/ / /build/fa16798f9daa5b15fd5cb2fcd5a5d39b602801a0 bzip2/1.0 .8:将源代码复制到构建文件夹 bzip2/1.0.8:在 /home/user/.conan/data/bzip2/1.0.8/ / /build/fa16798f9daa5b15fd5cb2fcd5a5d39b602801a0 bzip2/1.0.8中构建包:生成器 txt 创建了 conanbuildinfo。 bzip2/1.0.8:调用generate() bzip2/1.0.8:警告:不鼓励使用新的工具链和生成器而不指定构建配置文件(例如:-pr:b=default),这可能会导致失败和意外行为 bzip2 /1.0.8:聚合环境生成器 bzip2/1.0.8:调用 build() bzip2/1.0.8:CMake 命令:cmake -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE="/home/user/.conan/data/bzip2/ 1.0.8/// build /fa16798f9daa5b15fd5cb2fcd5a5d39b602801a0/build/generators/conan_toolchain.cmake"-DCMAKE_INSTALL_PREFIX="/home/user/.conan/data/bzip2/1.0.8/// package /fa16798f9daa5b15fd5cb2fcd 5a5d39b602801a0" -DCMAKE_POLICY_DEFAULT_CMP0091="新" -DCMAKE_BUILD_TYPE="Release" "/home/user/.conan/data/bzip2/1.0.8/ / /build/fa16798f9daa5b15fd5cb2fcd5a5d39b602801a0/src/.." CMake 错误:无法创建命名生成器 MinGW Makefile

发电机

  • Unix Makefiles = 生成标准 UNIX makefiles。Ninja = 生成 build.ninja 文件。Ninja Multi-Config = 生成 build-.ninja 文件。
    CodeBlocks - Ninja = 生成 CodeBlocks 项目文件。
    CodeBlocks - Unix Makefiles = 生成 CodeBlocks 项目文件。
    CodeLite - Ninja = 生成 CodeLite 项目文件。
    CodeLite - Unix Makefiles = 生成 CodeLite 项目文件。
    Eclipse CDT4 - Ninja = 生成 Eclipse CDT 4.0 项目文件。Eclipse CDT4 - Unix Makefiles= 生成 Eclipse CDT 4.0 项目文件。Kate - Ninja = 生成 Kate 项目文件。Kate - Unix Makefiles = 生成 Kate 项目文件。Sublime Text 2 - Ninja = 生成 Sublime Text 2 项目文件。Sublime Text 2 - Unix Makefiles = 生成 Sublime Text 2 项目文件。

bzip2/1.0.8:bzip2/1.0.8:错误:包“fa16798f9daa5b15fd5cb2fcd5a5d39b602801a0”构建失败 bzip2/1.0.8:警告:构建文件夹/home/user/.conan/data/bzip2/1.0.8/ / /build/ fa16798f9daa5b15fd5cb2fcd5a5d39b602801a0/build/Release 错误:bzip2/1.0.8:build() 方法中出现错误,第 69 行 cmake.configure(build_script_folder=os.path.join(self.source_folder, os.pardir)) ConanException:执行 cmake 时出现错误 1 -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE="/home/user/.conan/data/bzip2/1.0.8/ / /build/fa16798f9daa5b15fd5cb2fcd5a5d39b602801a0/build/generators/conan_toolchain.cmake" -DCMAKE_INSTALL_PREFIX="/home/user/. conan/data/bzip2/1.0.8/ / /package/fa16798f9daa5b15fd5cb2fcd5a5d39b602801a0" -DCMAKE_POLICY_DEFAULT_CMP0091="新" -DCMAKE_BUILD_TYPE="发布" "/home/user/.conan/data/bzip2/1.0.8/ / /build/fa16 798f9daa5b15fd5cb2fcd5a5d39b602801a0 /src/..”

Spa*_*oes 6

柯南处于 v1 和 v2 之间的过渡状态,因此这里有 3 个解决方案,每个解决方案都适用于柯南 v1 和 v2 食谱:

在全球范围内强制 Ninja 生成器:

<user_home>/.conan

  • conan.conf
[general]
cmake_generator = Ninja
Run Code Online (Sandbox Code Playgroud)
  • global.conf如果该文件尚不存在,则创建该文件,并添加:
tools.cmake.cmaketoolchain:generator=Ninja
Run Code Online (Sandbox Code Playgroud)

强制忍者的个人资料:

在您的个人资料中(<user_home>/.conan/profiles通常在文件夹中),添加:

[env]
CONAN_CMAKE_GENERATOR=Ninja # for conan v1 recipes
[conf]
tools.cmake.cmaketoolchain:generator=Ninja # for conan v2 recipes
Run Code Online (Sandbox Code Playgroud)

在柯南命令中按需强制忍者:

conan install <path/to/conanfile> -e CONAN_CMAKE_GENERATOR=Ninja -c tools.cmake.cmaketoolchain:generator=Ninja
Run Code Online (Sandbox Code Playgroud)