Search code examples
c++buildcmakeautotoolsconfigure

Can CMake generate a configure file?


I need the configure file to transpile from C++ to JS, I'm trying to use emscripten in a project. Emscripten comes with a tool called emconfigure, that replaces the autoconf configure,

But the project I'm building uses cmake as build system and currently (Jan-12) emscripten has only support for autoconf - so I'm bypassing it by generating the configure and doing a port on the make, so there a way to create the configure file from the cmake ?? I'm not talking about the make files.. but the configure file itself.


Solution

  • Yes, it can:

    configure_file(<input> <output>
                   [COPYONLY] [ESCAPE_QUOTES] [@ONLY]
                   [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])
    

    Example.h.in

    #ifndef EXAMPLE_H
    #define EXAMPLE_H
    
    /*
     * These values are automatically set according to their cmake variables.
     */
    #define EXAMPLE "${EXAMPLE}"
    #define VERSION "${VERSION}"
    #define NUMBER  ${NUMBER}
    
    #endif /* EXAMPLE_H */
    

    In your cmake file:

    set(EXAMPLE "This is an example")
    set(VERSION "1.0")
    set(NUMBER 3)
    
    configure_file(Example.h.in Example.h)
    

    Configured Example.h:

    #ifndef EXAMPLE_H
    #define EXAMPLE_H
    
    /*
     * These values are automatically set according to their cmake variables.
     */
    #define EXAMPLE "This is an example"
    #define VERSION "1.0"
    #define NUMBER  3
    
    #endif /* EXAMPLE_H */
    

    Documentation: