rams
rams

Reputation: 359

Is there is any way to build the Conan without cmake

I just started to explore both conan and cmake for building and packaging C++ files. Here is a sample conanfile.py

 from conans import ConanFile, CMake


class PocoTimerConan(ConanFile):
   settings = "os", "compiler", "build_type", "arch"
   requires = "Poco/1.7.8p3@pocoproject/stable"
   generators = "cmake", "gcc", "txt"
   default_options = {"Poco:shared": True, "OpenSSL:shared": True}

   def imports(self):
      self.copy("*.dll", dst="bin", src="bin") # From bin to bin
      self.copy("*.dylib*", dst="bin", src="lib") # From lib to bin

   def build(self):
      cmake = CMake(self)
      cmake.configure()
      cmake.build()

Is there any option to build the same without the use of cmake. Thanks in advance.

Upvotes: 2

Views: 2050

Answers (2)

drodri
drodri

Reputation: 5972

No, Conan uses whatever build system the library is using, wrapping it. In this case, Poco is using the CMake build system, so CMake is necessary to build it. It is not possible to replace a given build system by another one automatically, that level of automation does not exist.

That doesn't mean that Conan needs CMake to operate. Conan can work with any build system, including proprietary ones. For example:

Also, take into account that the build system used to create the package can be different to the one to consume that package. Conan "generators" can generate files for the consuming build system on the fly.

Maybe you are interested in the concept of "build-requires". You can use Conan to automatically install the cmake version that you want as a Conan package, and use it, injecting it automatically to packages to be build. Check the documentation of "build-requires" here

Upvotes: 1

uilianries
uilianries

Reputation: 3887

Yes, Conan is Cross platform, build system agnostic

There is a list with all integrations available, which includes MS Build, QMake and Autotools.

If you don't want to use integration tools, you can run directly the build commands, including running the compiler commands:

def build(self):
    self.run("gcc ...")

Upvotes: 2

Related Questions