Pergunta

I've set

set(CAN_USE_ASSEMBLER TRUE)

And it's not helping at all. I'm trying to create a static library with a command like:

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

where the files without extensions are C++ or C files and the .S file is assembly. But when I run cmake and make, it compiles the C/C++ sources and just ignores the assembly file... no warnings, no errors... just skips right over it.

I'd love any ideas. Full source is available on github (do note: this link is to the cmake branch, all others should be ignored). The first line is in this file and the second line is in this file.

Foi útil?

Solução 2

Note that you can enable ASM in the project() command too. For example:

project(abc
        LANGUAGES C CXX ASM)

Outras dicas

Update

See this better answer https://stackoverflow.com/a/67902603/2784641 It's not always possible to know what languages you need enabled at the time that the project() command is invoked... but probably 99.9% of the time it is, so go with this route. If, however, you need to programmatically enable different languages, based on some configure-time logic, then my original answer will work for you.

Original Answer

Finally found it. Instead of

set(CAN_USE_ASSEMBLER TRUE)

I should have used

enable_language(ASM)

When using gcc, you can compile .S files with your C compiler (no explicit invocation of asm needed). CMake can be told to do so using

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

for each of your .S files. Then they got compiled in...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top