Tengo muchos archivos fuente en el directorio de fuentes. Por ejemplo a.c, b.c, c.c y quiere compilarlo por gcc con la opción -combine.Combinación de Cmake y gcc
set(CMAKE_C_FLAGS "-combine")
set(SRC a.c b.c c.c)
add_executable(a.out ${SRC})
Cmake compila cada archivo * .c en el archivo de objeto, pero quiero recopilar todas las fuentes a un objeto. Cómo puedo conseguir esto.
En términos de gcc:
gcc -combine a.c b.c c.c -o module.o
ar rcs library.a module.o
Pero cmake utiliza la traducción por cada módulo de fuentes.
gcc a.c -o a.o
gcc b.c -o b.o
gcc c.c -o c.o
ar rcs library.a a.o b.o c.o
La traducción con la combinación podría acelerar el rendimiento del programa. No pude usar LTO, que podría resolver el mismo problema en cmake debido a la versión anterior de gcc.
Gracias.
¿Estás seguro de que existe una opción '-combine'? Tengo la sensación de que eso no es lo que intentas hacer. Tal vez te refieres a '-fwhole-programme ', que es moralmente equivalente a concatenar todos tus archivos fuente juntos. Pero es más probable que solo intentes hacer una biblioteca reutilizable. Use '-shared' para hacer una biblioteca dinámica, o simplemente use el programa' ar' para combinar muchos archivos '.o' en una biblioteca estática. CMake puede automatizar ambos para usted. –
Sí, estoy seguro. Esta opción existe en la versión de gcc 4.4/4.5 –
¡Interesante, desapareció en 4.6! :-) ¿Cuál es su propósito? ¿Algo que no puedas lograr con '-fwhole-programme'? –