Question

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.

Was it helpful?

Solution 2

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

project(abc
        LANGUAGES C CXX ASM)

OTHER TIPS

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...

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top