2014-05-04 9 views
5

Ho impostatoPerché CMake ignora i file di assieme quando crea una libreria statica?

set(CAN_USE_ASSEMBLER TRUE) 

E non sta aiutando affatto. Sto cercando di creare una libreria statica con un comando come:

add_library(${CMAKE_PROJECT_NAME} STATIC ../PropWare ../spi ../spi_as.S ../sd) 

in cui i file senza estensioni sono file C++ o C e il file .S è l'Assemblea. Ma quando eseguo cmake e make, compila i sorgenti C/C++ e ignora semplicemente il file assembly ... nessun avvertimento, nessun errore ... salta proprio sopra.

Mi piacerebbe qualche idea. La fonte completa è disponibile su github (nota: questo collegamento è al ramo cmake, tutti gli altri devono essere ignorati). La prima riga è in this file e la seconda riga è in this file.

Grazie, David

risposta

5

finalmente trovato. Invece di

set(CAN_USE_ASSEMBLER TRUE) 

avrei dovuto usare

enable_language(ASM) 
0

Quando si utilizza gcc, è possibile compilare .S file con il compilatore C (nessuna invocazione esplicita di asm necessario). CMake può essere detto di farlo utilizzando

set_property(SOURCE <myfile>.S PROPERTY LANGUAGE C) 

per ognuno dei tuoi file .S. Poi sono stati compilati in ...

+0

Suppongo che sia un'opzione che funzionerebbe. Ma perché non abilitare semplicemente l'assemblaggio tramite il comando 'enable_language (ASM)'? – DavidZemon

+0

E in realtà, ho CMake impostato per usare 'gcc' invece di' as' per creare file di assembly. – DavidZemon

Problemi correlati