2012-01-16 15 views
5

Necesito el archivo de configuración para transpilar de C++ a JS, estoy tratando de usar emscripten en un proyecto. Emscripte viene con una herramienta llamada emconfigure, que reemplaza la configuración de autoconf,¿Puede CMake generar el archivo de configuración?

Pero el proyecto que estoy construyendo usa cmake como sistema de compilación y actualmente (ene-12) emscripten solo tiene soporte para autoconf, así que lo evito generando la configuración y haciendo un puerto en la marca, entonces ¿hay alguna manera de crear el archivo de configuración desde el cmake? No estoy hablando de los archivos make ... sino del archivo configure en sí mismo.

+0

Por la forma en que desea traducir el lenguaje. ¿Puedes ser mas específico? – Neox

+1

Esta pregunta no está clara. CMake no puede generar un script llamado configure en la forma en que lo hace el autoconf: funciona de manera diferente para hacer un trabajo similar. Pero puede hacer operaciones de configuración en archivos en el árbol fuente. ¿Qué traducción de idioma se está haciendo? ¿Qué tiene que ver el emscripto con algo? – mabraham

Respuesta

15

Sí, se puede:

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 "${VALUE}" 
#define VERSION "${VERSION}" 
#define NUMBER ${NUMBER} 

#endif /* EXAMPLE_H */ 

En el archivo de cmake:

set(EXAMPLE "This is an example") 
set(VERSION "1.0") 
set(NUMBER 3) 

configure_file(Example.h.in Example.h) 

Configurado 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 */ 

Documentación:

+0

impresionante, gracias por la respuesta. Muy útil !! – Jacko

+0

CMake no definirá si la variable se evalúa como falsa. p.ej. si el número es 0, no lo definirá. ¿Hay alguna manera de arreglar eso?Solo estoy usando ifndef para resolverlo. –

+0

¿Está utilizando '# cmakedefine' o simple' # define'? Este último no debería hacer esto. Si tampoco funciona, puede agregar un '#ifnedf ... #define ...' en el archivo de plantilla. – ollo

0

sí cmake le genera los archivos que necesita para construir el proyecto según su plataforma de destino. sin embargo, necesita escribir los archivos CMakelist.txt para CMake usted mismo o debe obtenerlos de otra persona. si emscripten los tiene y tiene cmake instalado, vaya a la raíz de su directorio cource y ejecute cmake para ver una lista de argumentos que puede usar

-7

Cmake es un sistema de compilación. Genera Makefiles. Mire here para más información sobre eso. Pero para responder a su pregunta brevemente, no, no puede generar archivos de configuración con cmake.

+2

Normal incorrecto, compare con la respuesta aceptada. – usr1234567

0

De hecho, no genere un "conjunto", pero puede usar funciones que hacen todo lo que hace, como es el caso de los tipos de datos vereficação, los encabezados vereficar y más.

Bueno, iré por un enlace a mi proyecto que contiene todas esas funciones. Sugiero que al estudiarlo, cualquier cosa envíeme un correo electrónico o algo para responder sus preguntas.

aquí: enter link description here

Comprobar también la carpeta/deps/cmake para ver las funciones creadas por nosotros.

Cuestiones relacionadas