在cmake中生成asm文件后调用shell命令

时间:2017-02-01 19:12:48

标签: android assembly makefile cmake

在android mk文件中,可以在使用LOCAL_FILTER_ASM生成程序集文件后立即调用shell命令。

我想知道是否有任何解决方法可以在cmake中使用类似的东西?

2 个答案:

答案 0 :(得分:3)

我承认我有查找what LOCAL_FILTER_ASM does

以下是我的代码片段(在CMake中的功能相同):

cmake_minimum_required(VERSION 3.0)
project(LocalFilterASM C ASM)

set(LOCAL_FILTER_ASM "cp")

string(
    REPLACE 
        "<ASSEMBLY_SOURCE>" "<OBJECT>.S.original" 
        MY_CREATE_ASSEMBLY "${CMAKE_C_CREATE_ASSEMBLY_SOURCE}"
)
string(
   REPLACE 
        "<SOURCE>" "<OBJECT>.S" 
         MY_COMPILE_OBJECT "${CMAKE_ASM_COMPILE_OBJECT}"
)

set(
    CMAKE_C_COMPILE_OBJECT 
        "${MY_CREATE_ASSEMBLY}"
        "${LOCAL_FILTER_ASM} <OBJECT>.S.original <OBJECT>.S"
        "${MY_COMPILE_OBJECT}"
) 

file(WRITE main.c "int main(void) { return 0; }")
add_executable(${PROJECT_NAME} main.c)

这只需要一些现有的CMake编译器规则,并将其组合成CMAKE_C_COMPILE_OBJECT的新多行规则。请注意,这只适用于CMake的makefile生成器。

答案 1 :(得分:0)

很难说,因为你没有提供任何你现有的例子。

但是,您可以使用add_custom_command()函数在脚本之前和之后添加到任何目标(有关所需语法,请参阅“构建事件”部分页面底部)。