首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android.mk,包含所有cpp文件

Android.mk,包含所有cpp文件
EN

Stack Overflow用户
提问于 2012-01-24 07:50:58
回答 4查看 35.1K关注 0票数 50

我正在尝试使用ndk构建一个Android项目,但我遇到了一些麻烦。

下面是有效的Android.mk文件:

代码语言:javascript
复制
LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := mylib
LOCAL_CFLAGS    := -Werror
LOCAL_SRC_FILES := main.cpp, Screen.cpp, ScreenManager.cpp  
LOCAL_LDLIBS    := -llog

include $(BUILD_SHARED_LIBRARY)

有没有一种方法可以让我指定目录中的所有*.cpp文件,而不需要在LOCAL_SRC_FILES下手动列出它们?

到目前为止,我尝试使用LOCAL_SRC_FILES =$(通配符*.cpp),但现在它确实起作用了,似乎没有选择任何文件。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-24 08:10:29

你可以试试这样的..。

代码语言:javascript
复制
FILE_LIST := $(wildcard $(LOCAL_PATH)/[DIRECTORY]/*.cpp)
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)

..。将[DIRECTORY]更改为文件的实际目录。如果它们与您的.mk文件在同一目录中,则删除该部分。创建FILE_LIST变量以查找[DIRECTORY]目录下的所有.cpp文件。然后在文件列表中使用它。然后,LOCAL_SRC_FILES行将从列表中删除该LOCAL_PATH

票数 75
EN

Stack Overflow用户

发布于 2013-05-01 06:00:33

我已经在我的Android.mk中使用了这个脚本,为我节省了很多时间!

代码语言:javascript
复制
#traverse all the directory and subdirectory
define walk
  $(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef

#find all the file recursively under jni/
ALLFILES = $(call walk, $(LOCAL_PATH))
FILE_LIST := $(filter %.cpp, $(ALLFILES))

LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)

Here是主旨

票数 22
EN

Stack Overflow用户

发布于 2013-05-07 10:54:32

这样如何:

代码语言:javascript
复制
LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/*.cpp))

如果您担心*的扩展包含$(LOCAL_PATH)/,那么它可能没问题:

代码语言:javascript
复制
LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/./,,$(wildcard $(LOCAL_PATH)/./*.cpp))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8980284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档