Skip to content
/ jmake Public

Java application that generates build scripts based on CMake compatible CMakeLists.txt files.

License

Notifications You must be signed in to change notification settings

optimasc/jmake

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jmake quick documentation
==========================

Overview
--------
jmake is a simple java application that generates build scripts based 
on CMake compatible CMakeLists.txt files.

It only supports a strict subset of CMake 3.X commands, just enough 
to generate proper build scripts, and only supports in source compilation.
Other commands are simply ignored.

It either should be run in the location where the CMakeLists.txt is 
located and it will be automatically be processed or a complete path 
specification of the filename to parse should be passed as argument to 
the application.

Supported build scripts
-----------------------

The current version supports the following build script generation:

Makefile generation
~~~~~~~~~~~~~~~~~~~~

The tool generates mostly POSIX compliant Makefiles, which are compatible 
with POSIX C compiler interfaces. 

One Makefile will be generated by target, with additional targets using 
the output name MakefileN where N is a digit starting from 1.

All user defined macros using set are all expanded when generating the 
build scripts. 

Some variables are defined that can be configured by specifying macros when 
calling make:

INSTALL_PREFIX:: Installation prefix where install should place its targets.
STATIC_LIBRARY_PREFIX:: Usual prefix of static libraries 
 (lib on POSIX platforms).
STATIC_LIBRARY_SUFFIX:: Usual suffix of static libraries 
 (.a on POSIX platforms)
STATIC_LIBRARY_FLAGS:: Linker flags to add when generating static libraries.
EXECUTABLE_SUFFIX:: Suffix for executable files (such as .exe on Windows 
 platforms)
SHARED_LIBRARY_PREFIX:: Usual prefix of shared libraries.
SHARED_LIBRARY_SUFFIX:: Usual suffix of shared libraries.
SHARED_LIBRARY_FLAGS:: Linker flags to add when generating shared libraries.
OBJECT_SUFFIX:: Compilation unit resulting file suffix (Usually .o on 
 POSIX platforms)
COMPILE_OPTIONS:: Compile options
COMPILE_DEFINITIONS:: Compile definitions

Supported CMake commands
------------------------

The following CMake commands are currently supported, with most
parameters except mandatory ones simply being ignored:

add_compile_options(<option> ...):: Add compile options to all targets in 
 this CMakeLists.txt
add_executable(<name> source1 [source2 ...]):: Add executable generation 
 target from source files.
add_library(<name> source1 [source2 ...]):: Add static library generation 
 target from source files.
include_directories(dir1 [dir2 ...]):: Add directories to include 
 compilation search path  to all targets in this CMakeLists.txt
install:: Install targets, files or directories to specified destination.
link_directories(directory1 [directory2 ...]):: Add directories to linker 
 library search path to all targets in this CMakeLists.txt
link_libraries(library1 [library2 ...]):: Add libraries for linker to 
 link with to all executable targets in this CMakeLists.txt
set(<variable> <value>):: Sets a variable/macro
target_compile_definitions(<target> item1 [item2 ...]):: Add compile 
 definitions to a specific target.
target_compile_options(<target> item1 [item2 ...])::  Add compile options 
 to a specific target.
target_include_directories(<target> directory1 [directory2 ...]):: Add 
 directories to include compilation search path for a specific target.
target_link_libraries(<target> item1 [item2 ...]):: Add libraries for 
 linker to link with for specific executable target.
project(<project-name> [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]] 
 [LANGUAGES <language-name>...])::
  Set a name and version of the entire project.
  
Supported CMake variables
-------------------------

CMAKE_CURRENT_SOURCE_DIR:: Replaced by ".".
CMAKE_CURRENT_BINARY_DIR:: Replaced by ".".
CMAKE_SOURCE_DIR:: Replaced by "."
CMAKE_BINARY_DIR:: Replaced by "."
PROJECT_NAME : Replaced by the project name as defined in the project() command
PROJECT_VERSION : Replaced by the project version as defined in the project() if it is defined.

Supported Geneator expressions
------------------------------
$<INSTALL_INTERFACE:...>: Replaced by empty string.
$<BUILD_INTERFACE:...>: Supported and added in output.

About

Java application that generates build scripts based on CMake compatible CMakeLists.txt files.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages