cc_binary设置了enabled:false,但是out木下仍然编译出来了,为啥
时间: 2024-04-01 20:35:56 浏览: 13
在 Android 源代码中,`cc_binary` 是用来描述一个可执行二进制文件的模块类型。当你在 `cc_binary` 中设置 `enabled:false` 时,这个模块会被禁用,它不会参与编译过程。但是如果你已经编译过这个模块,那么在 `out` 目录下就会存在这个模块的编译结果。
这是因为 `enabled:false` 只会影响当前编译过程,而不会影响已经编译过的结果。如果你想删除这个模块的编译结果,可以使用 `make clean` 命令或者手动删除 `out` 目录下的相关文件,然后重新编译即可。
相关问题
cc_binary { name: “yuerinserver”, proprietary: true, //关键参数,决定资源由vendor独占 /其它*/ }转化为mk写法
以下是将cc_binary转化为Android.mk写法:
```
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := yuerinserver
LOCAL_MODULE_TAGS := optional
LOCAL_PROPRIETARY_MODULE := true
LOCAL_SRC_FILES := <source_files>
LOCAL_SHARED_LIBRARIES := <shared_libraries>
include $(BUILD_EXECUTABLE)
```
其中,关键参数`proprietary`被转化为`LOCAL_PROPRIETARY_MODULE`。请注意,`LOCAL_PROPRIETARY_MODULE`只是一个标记,需要在Android.mk文件中额外配置以决定资源是否被vendor独占。
android.bp中让cc_binary不参与编译
要让 `cc_binary` 不参与编译,可以在 `android.bp` 文件中使用 `enabled: false` 属性。具体做法如下:
```
cc_binary {
name: "my_binary",
srcs: ["my_binary.c"],
enabled: false,
}
```
这样就可以让 `my_binary` 不参与编译。注意,这个属性只是禁用了这个 `cc_binary` 的编译,但它仍然会出现在所属的 `cc_library` 或 `cc_shared_library` 中。如果要完全从编译中排除这个二进制文件,可以在 `cc_library` 或 `cc_shared_library` 中将它从 `static_libs` 或 `shared_libs` 中移除。