[rust-dev] Using CMake with Rust

György Andrasek jurily at gmail.com
Wed Jan 1 21:05:27 PST 2014


The proper way to support a language in CMake is outlined in
`Modules/CMakeAddNewLanguage.txt`:

> This file provides a few notes to CMake developers about how to add
> support for a new language to CMake.  It is also possible to place
> these files in CMAKE_MODULE_PATH within an outside project to add
> languages not supported by upstream CMake.  However, this is not
> a fully supported use case.
>
> The implementation behind the scenes of project/enable_language,
> including the compiler/platform modules, is an *internal* API that
> does not make any compatibility guarantees.  It is not covered in the
> official reference documentation that is versioned with the source code.
> Maintainers of external language support are responsible for porting
> it to each version of CMake as upstream changes are made.  Since
> the API is internal we will not necessarily include notice of any
> changes in release notes.
>
>
> CMakeDetermine(LANG)Compiler.cmake  -> this should find the compiler for LANG and configure CMake(LANG)Compiler.cmake.in
>
> CMake(LANG)Compiler.cmake.in  -> used by CMakeDetermine(LANG)Compiler.cmake
>     This file is used to store compiler information and is copied down into try
>     compile directories so that try compiles do not need to re-determine and test the LANG
>
> CMakeTest(LANG)Compiler.cmake -> test the compiler and set:
>     SET(CMAKE_(LANG)_COMPILER_WORKS 1 CACHE INTERNAL "")
>
> CMake(LANG)Information.cmake  -> set up rule variables for LANG :
> CMAKE_(LANG)_CREATE_SHARED_LIBRARY
> CMAKE_(LANG)_CREATE_SHARED_MODULE
> CMAKE_(LANG)_CREATE_STATIC_LIBRARY
> CMAKE_(LANG)_COMPILE_OBJECT
> CMAKE_(LANG)_LINK_EXECUTABLE


I've been playing around with it, but so far I haven't been able to get 
a test case off the ground. I have no idea how to actually make this 
format string expand for example, or where to find documentation.

>   set(CMAKE_Java_COMPILE_OBJECT
>     "<CMAKE_Java_COMPILER> <FLAGS> <SOURCE> -d <OBJECT_DIR>")





More information about the Rust-dev mailing list