Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Crayon鑫
Paddle
提交
2d8467ee
P
Paddle
项目概览
Crayon鑫
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
2d8467ee
编写于
9月 22, 2017
作者:
Y
Yiqun Liu
提交者:
GitHub
9月 22, 2017
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #4320 from Xreki/fix_android_linking_error
Fix bug in cc_library, when merging several libraries into one on Linux.
上级
d35417e7
dd2f477a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
35 addition
and
31 deletion
+35
-31
cmake/generic.cmake
cmake/generic.cmake
+33
-29
paddle/capi/CMakeLists.txt
paddle/capi/CMakeLists.txt
+2
-2
未找到文件。
cmake/generic.cmake
浏览文件 @
2d8467ee
...
...
@@ -106,22 +106,22 @@ function(merge_static_libs TARGET_NAME)
endforeach
()
list
(
REMOVE_DUPLICATES libs_deps
)
if
(
APPLE
)
# Use OSX's libtool to merge archives
# To produce a library we need at least one source file.
# It is created by add_custom_command below and will helps
# also help to track dependencies.
set
(
dummyfile
${
CMAKE_CURRENT_BINARY_DIR
}
/
${
TARGET_NAME
}
_dummy.c
)
# To produce a library we need at least one source file.
# It is created by add_custom_command below and will helps
# also help to track dependencies.
set
(
target_SRCS
${
CMAKE_CURRENT_BINARY_DIR
}
/
${
TARGET_NAME
}
_dummy.c
)
if
(
APPLE
)
# Use OSX's libtool to merge archives
# Make the generated dummy source file depended on all static input
# libs. If input lib changes,the source file is touched
# which causes the desired effect (relink).
add_custom_command
(
OUTPUT
${
dummyfile
}
COMMAND
${
CMAKE_COMMAND
}
-E touch
${
dummyfile
}
add_custom_command
(
OUTPUT
${
target_SRCS
}
COMMAND
${
CMAKE_COMMAND
}
-E touch
${
target_SRCS
}
DEPENDS
${
libs
}
)
# Generate dummy staic lib
file
(
WRITE
${
dummyfile
}
"const char * dummy =
\"
${
dummyfile
}
\"
;"
)
add_library
(
${
TARGET_NAME
}
STATIC
${
dummyfile
}
)
file
(
WRITE
${
target_SRCS
}
"const char *dummy =
\"
${
target_SRCS
}
\"
;"
)
add_library
(
${
TARGET_NAME
}
STATIC
${
target_SRCS
}
)
target_link_libraries
(
${
TARGET_NAME
}
${
libs_deps
}
)
foreach
(
lib
${
libs
}
)
...
...
@@ -130,11 +130,14 @@ function(merge_static_libs TARGET_NAME)
endforeach
()
add_custom_command
(
TARGET
${
TARGET_NAME
}
POST_BUILD
COMMAND rm
"
${
CMAKE_CURRENT_BINARY_DIR
}
/lib
${
TARGET_NAME
}
.a"
COMMAND /usr/bin/libtool -static -o
"
${
CMAKE_CURRENT_BINARY_DIR
}
/lib
${
TARGET_NAME
}
.a"
${
libfiles
}
)
COMMAND /usr/bin/libtool -static -o
"
${
CMAKE_CURRENT_BINARY_DIR
}
/lib
${
TARGET_NAME
}
.a"
${
libfiles
}
)
else
()
# general UNIX: use "ar" to extract objects and re-add to a common lib
set
(
target_DIR
${
CMAKE_CURRENT_BINARY_DIR
}
/
${
TARGET_NAME
}
.dir
)
foreach
(
lib
${
libs
}
)
set
(
objlistfile
${
lib
}
.objlist
)
# list of objects in the input library
set
(
objdir
${
lib
}
.objdir
)
set
(
objlistfile
${
target_DIR
}
/
${
lib
}
.objlist
)
# list of objects in the input library
set
(
objdir
${
target_DIR
}
/
${
lib
}
.objdir
)
add_custom_command
(
OUTPUT
${
objdir
}
COMMAND
${
CMAKE_COMMAND
}
-E make_directory
${
objdir
}
...
...
@@ -142,31 +145,32 @@ function(merge_static_libs TARGET_NAME)
add_custom_command
(
OUTPUT
${
objlistfile
}
COMMAND
${
CMAKE_AR
}
-x
"$<TARGET_FILE:
${
lib
}
>"
COMMAND
${
CMAKE_AR
}
-t
"$<TARGET_FILE:
${
lib
}
>"
>
../
${
objlistfile
}
COMMAND
${
CMAKE_AR
}
-t
"$<TARGET_FILE:
${
lib
}
>"
>
${
objlistfile
}
DEPENDS
${
lib
}
${
objdir
}
WORKING_DIRECTORY
${
objdir
}
)
# Empty dummy source file that goes into merged library
set
(
mergebase
${
lib
}
.mergebase.c
)
add_custom_command
(
OUTPUT
${
mergebase
}
COMMAND
${
CMAKE_COMMAND
}
-E touch
${
mergebase
}
DEPENDS
${
objlistfile
}
)
list
(
APPEND mergebases
"
${
mergebase
}
"
)
list
(
APPEND target_OBJS
"
${
objlistfile
}
"
)
endforeach
()
add_library
(
${
TARGET_NAME
}
STATIC
${
mergebases
}
)
# Make the generated dummy source file depended on all static input
# libs. If input lib changes,the source file is touched
# which causes the desired effect (relink).
add_custom_command
(
OUTPUT
${
target_SRCS
}
COMMAND
${
CMAKE_COMMAND
}
-E touch
${
target_SRCS
}
DEPENDS
${
libs
}
${
target_OBJS
}
)
# Generate dummy staic lib
file
(
WRITE
${
target_SRCS
}
"const char *dummy =
\"
${
target_SRCS
}
\"
;"
)
add_library
(
${
TARGET_NAME
}
STATIC
${
target_SRCS
}
)
target_link_libraries
(
${
TARGET_NAME
}
${
libs_deps
}
)
# Get the file name of the generated library
set
(
outlibfile
"$<TARGET_FILE:
${
TARGET_NAME
}
>"
)
set
(
target_LIBNAME
"$<TARGET_FILE:
${
TARGET_NAME
}
>"
)
foreach
(
lib
${
libs
}
)
add_custom_command
(
TARGET
${
TARGET_NAME
}
POST_BUILD
COMMAND
${
CMAKE_AR
}
cr
${
outlibfile
}
*.o
COMMAND
${
CMAKE_RANLIB
}
${
outlibfile
}
WORKING_DIRECTORY
${
lib
}
.objdir
)
endforeach
()
add_custom_command
(
TARGET
${
TARGET_NAME
}
POST_BUILD
COMMAND
${
CMAKE_AR
}
crs
${
target_LIBNAME
}
`find
${
target_DIR
}
-name '*.o'`
COMMAND
${
CMAKE_RANLIB
}
${
target_LIBNAME
}
WORKING_DIRECTORY
${
target_DIR
}
)
endif
()
endfunction
(
merge_static_libs
)
...
...
@@ -196,7 +200,7 @@ function(cc_library TARGET_NAME)
add_style_check_target
(
${
TARGET_NAME
}
${
cc_library_SRCS
}
${
cc_library_HEADERS
}
)
else
(
cc_library_SRCS
)
if
(
cc_library_DEPS
)
if
(
cc_library_DEPS
)
merge_static_libs
(
${
TARGET_NAME
}
${
cc_library_DEPS
}
)
else
()
message
(
FATAL
"Please specify source file or library in cc_library."
)
...
...
paddle/capi/CMakeLists.txt
浏览文件 @
2d8467ee
...
...
@@ -62,6 +62,7 @@ if(ANDROID)
LIBRARY DESTINATION lib/
${
ANDROID_ABI
}
)
execute_process
(
COMMAND
${
GIT_EXECUTABLE
}
log --pretty=oneline -1
WORKING_DIRECTORY
${
PADDLE_SOURCE_DIR
}
OUTPUT_VARIABLE GIT_COMMITS_LIST
RESULT_VARIABLE GIT_COMMITS_LIST_RESULT
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
)
...
...
@@ -81,8 +82,7 @@ if(ANDROID)
)"
)
else
(
ANDROID
)
install
(
TARGETS paddle_capi_whole
ARCHIVE DESTINATION lib
)
install
(
TARGETS paddle_capi_whole ARCHIVE DESTINATION lib
)
if
(
NOT IOS
)
install
(
TARGETS paddle_capi_shared DESTINATION lib
)
endif
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录