【发布时间】:2017-02-01 19:12:48
【问题描述】:
在 android mk 文件中,可以在使用 LOCAL_FILTER_ASM 生成程序集文件后立即调用 shell 命令。
我想知道在 cmake 中是否有类似的解决方法?
【问题讨论】:
标签: android assembly makefile cmake
在 android mk 文件中,可以在使用 LOCAL_FILTER_ASM 生成程序集文件后立即调用 shell 命令。
我想知道在 cmake 中是否有类似的解决方法?
【问题讨论】:
标签: android assembly makefile cmake
我承认我曾查找过 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 生成器。
【讨论】:
这很难说,因为你没有提供任何你目前拥有的例子。
但是,您可以使用 add_custom_command() 函数将前后脚本添加到任何目标(有关所需语法,请参阅页面底部的“构建事件”部分)。
【讨论】: