Cygwin+conan+cmake: how to force use of Ninja?

Viewed 66

I installed Cygwin with packages for python, cmake and Ninja. Then I installed Conan (as recommended - with pip). Now when I try Conan with minimal conanfile.txt:

[requires]
bzip2/1.0.8

It fails with

CMake Error: Could not create named generator MinGW Makefiles

(full log pasted below).

I have the reason for avoiding MinGW, so the question is: how to force conan+cmake to use ninja instead of "MinGW Makefiles"??

Tried to set as advised here, no luck.

$ conan install -pr clang . --build=bzip2 Configuration: [settings] 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 [options] [build_requires] [env] CONAN_CMAKE_GENERATOR=Ninja bzip2/1.0.8: Forced build from source conanfile.txt: Installing package Requirements bzip2/1.0.8 from 'conancenter' - Cache cmake/3.24.0 from 'conancenter' - Cache Packages bzip2/1.0.8:fa16798f9daa5b15fd5cb2fcd5a5d39b602801a0 - Build cmake/3.24.0:0a420ff5c47119e668867cdb51baff0eca1fdb68 - Cache

Installing (downloading, building) binaries... bzip2/1.0.8: WARN: Build folder is dirty, removing it: /home/user/.conan/data/bzip2/1.0.8///build/fa16798f9daa5b15fd5cb2fcd5a5d39b602801a0 bzip2/1.0.8: Copying sources to build folder bzip2/1.0.8: Building your package in /home/user/.conan/data/bzip2/1.0.8///build/fa16798f9daa5b15fd5cb2fcd5a5d39b602801a0 bzip2/1.0.8: Generator txt created conanbuildinfo.txt bzip2/1.0.8: Calling generate() bzip2/1.0.8: WARN: Using the new toolchains and generators without specifying a build profile (e.g: -pr:b=default) is discouraged and might cause failures and unexpected behavior bzip2/1.0.8: Aggregating env generators bzip2/1.0.8: Calling build() bzip2/1.0.8: CMake command: 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/fa16798f9daa5b15fd5cb2fcd5a5d39b602801a0" -DCMAKE_POLICY_DEFAULT_CMP0091="NEW" -DCMAKE_BUILD_TYPE="Release" "/home/user/.conan/data/bzip2/1.0.8///build/fa16798f9daa5b15fd5cb2fcd5a5d39b602801a0/src/.." CMake Error: Could not create named generator MinGW Makefiles

Generators

  • Unix Makefiles = Generates standard UNIX makefiles. Ninja = Generates build.ninja files. Ninja Multi-Config = Generates build-.ninja files.
    CodeBlocks - Ninja = Generates CodeBlocks project files.
    CodeBlocks - Unix Makefiles = Generates CodeBlocks project files.
    CodeLite - Ninja = Generates CodeLite project files.
    CodeLite - Unix Makefiles = Generates CodeLite project files.
    Eclipse CDT4 - Ninja = Generates Eclipse CDT 4.0 project files. Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files. Kate - Ninja = Generates Kate project files. Kate - Unix Makefiles = Generates Kate project files. Sublime Text 2 - Ninja = Generates Sublime Text 2 project files. Sublime Text 2 - Unix Makefiles = Generates Sublime Text 2 project files.

bzip2/1.0.8: bzip2/1.0.8: ERROR: Package 'fa16798f9daa5b15fd5cb2fcd5a5d39b602801a0' build failed bzip2/1.0.8: WARN: Build folder /home/user/.conan/data/bzip2/1.0.8///build/fa16798f9daa5b15fd5cb2fcd5a5d39b602801a0/build/Release ERROR: bzip2/1.0.8: Error in build() method, line 69 cmake.configure(build_script_folder=os.path.join(self.source_folder, os.pardir)) ConanException: Error 1 while executing 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/fa16798f9daa5b15fd5cb2fcd5a5d39b602801a0" -DCMAKE_POLICY_DEFAULT_CMP0091="NEW" -DCMAKE_BUILD_TYPE="Release" "/home/user/.conan/data/bzip2/1.0.8///build/fa16798f9daa5b15fd5cb2fcd5a5d39b602801a0/src/.."

1 Answers

conan is in a transition state between v1 & v2, so here are 3 solutions, each of them working for conan v1 & v2 recipes:

Force Ninja generator globally:

In <user_home>/.conan:

  • In conan.conf:
[general]
cmake_generator = Ninja
  • Create the file global.conf if it does not exist yet, and add:
tools.cmake.cmaketoolchain:generator=Ninja

Force Ninja from profile:

In your profile (in <user_home>/.conan/profiles folder usually), add:

[env]
CONAN_CMAKE_GENERATOR=Ninja # for conan v1 recipes
[conf]
tools.cmake.cmaketoolchain:generator=Ninja # for conan v2 recipes

Force Ninja on demand in conan commands:

conan install <path/to/conanfile> -e CONAN_CMAKE_GENERATOR=Ninja -c tools.cmake.cmaketoolchain:generator=Ninja
Related