Skip to content

shoz-f/mix_cmake

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mix Cmake

Mix Cmake is Elixir mix task to run Cmake build tool.

Installation

Add following dependency to your mix.exs,

def deps do
  [
    {:mix_cmake, "~> 0.1.5"}
  ]
end

and compile mix_cmake.

$ mix deps.get
$ mix deps.compile
==> mix_cmake

Optionaly you can include some Cmake configuration as cmake: attribute in project/0 list.

def project do
  [
    ...
    cmake: cmake()
  ]
end

def cmake() do
  [
    # Specify cmake build directory or pseudo-path {:local, :global}.
    #   :local(default) - "./_build/.cmake_build"
    #   :global - "~/.\#{Cmake.app_name()}"
    #
    build_dir: :local,
    
    # Specify cmake source directory.(default: File.cwd!)
    #
    source_dir: File.cwd!,
    
    # Specify generator name.
    # "cmake --help" shows you build-in generators list.
    #
    generator: "MSYS Makefiles",
    
    # Specify jobs parallel level.
    #
    build_parallel_level: 4
  ]
end

Basic Usage

At the first, you need to prepare the "CMakeLists.txt" for your project. Mix Cmake can generate boiler plate "CMakeLists.txt" if you want. It also make a snipet of cmake/0 - Cmake configuration - including to mix.exs.

$ cd <your project>
$ mix cmake.init

After that, you will invoke sub-command config, build and install in order or invoke all in one command.

$ mix cmake.config
$ mix cmake.build
$ mix cmake.install
$ mix cmake --config

Of course, config sub-command need to be run once. "mix cmake" with no options executes build and install only.

You can remove optupts built by Cmake to invoke sub-command clean.

$ mix cmake.clean

CAUTION: clean's option --all means to remove WHOLE BUILD working directory. You will have to run mix cmake.config next time.

Compiler Task

There is also a compiler task - Mix.Tasks.Compile.Cmake. You can execute cmake by invoking mix compile. In this case, you need to add the following settings to mix.exs.

def project() do
[
  app: :myapp,
  deps: deps(),
  compilers: [:cmake] ++ Mix.compilers,
  
  cmake: [
    build_dir: :local,
    build_parallel_level: 4,
    ...
  ]
]
end

License

Mix Cmake is licensed under the Apache License Version 2.0.

About

Mix's CMake task

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages