为什么CMake在构建静态库时忽略汇编文件?

dba5bblo  于 2023-03-12  发布在  其他
关注(0)|答案(3)|浏览(151)

我已经定好了

set(CAN_USE_ASSEMBLER TRUE)

但是一点用都没有。我正在尝试用一个命令创建一个静态库,比如:

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

其中没有扩展名的文件是C或C文件,.S文件是汇编文件。但当我运行cmake和make时,它编译C/C源代码,只是忽略汇编文件...没有警告,没有错误...只是直接跳过它。
我很乐意提供任何想法。完整的源代码可以在github上找到(请注意:此链接指向cmake分支,其他所有链接都应忽略)。第一行位于this file中,第二行位于this file中。

z4iuyo4d

z4iuyo4d1#

更新

https://stackoverflow.com/a/67902603/2784641在调用project()命令时,并不总是能够知道需要启用哪些语言...但在99.9%的情况下,可能是这样,所以请使用此方法。但是,如果您需要基于某些配置时逻辑,通过编程启用不同的语言,那么我最初的答案将为您工作。

原始答案

终于找到了

set(CAN_USE_ASSEMBLER TRUE)

我应该用

enable_language(ASM)
u5rb5r59

u5rb5r592#

请注意,您也可以在project()命令中启用ASM

project(abc
        LANGUAGES C CXX ASM)
nzkunb0c

nzkunb0c3#

使用gcc时,可以用C编译器编译.S文件(不需要显式调用asm)。

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

每个.S文件。然后它们被编译成...

相关问题