用cmake ExternalProject_Add 组织的模块能否在总项目编译节点选择关闭编译,比如warpCTC模块
Created by: backyes
这次编译机制改动较大,在内部生产环境下编译遇到若干问题,手动排除若干后,最后仍然未能解决。 这里反馈几个细节,以及几个疑问:
- 当前编译基本要求编译机能连internet,否则编译相对困难很多。(这个问题还好解决)
- 依赖库采用thirdparty方式,其编译过程不受Paddle顶层对编译选项的控制,而是依赖具体子模块的编译。比如出现了
/home/wangyanfei/paddle_internal_release_tools_dev_momentum_tips/idl/paddle/Paddle/third_party/install/protobuf/bin/protoc: /lib64/libc.so.6: version `GLIBC_2.14' not found
的编译问题,根本原因是系统默认编译器版本低,且同时使用了安装了高版本编译器,这种非标准方式thirdparty的cmake系统并未处理这种情况。个人觉得,C++这种底层语言对编译环境依赖相对大,因此这种孤立的thirdparty编译方法可能要小心仔细一点,避免出现更多编译未定义问题。
此外,尝试在mac系统上编译,也出现warpCTC要求高版本编译器
baidudeMacBook-Pro:build baidu$ make
[ 3%] Built target gflags
[ 5%] Built target glog
[ 8%] Built target gtest
[ 11%] Built target zlib
[ 13%] Built target protobuf
[ 14%] Performing configure step for 'warpctc'
CMake Error at /Users/baidu/work/Paddle/third_party/warpctc/src/warpctc-stamp/warpctc-configure.cmake:16 (message):
Command failed: 1
'/usr/local/Cellar/cmake/3.2.3/bin/cmake' '-DCMAKE_CXX_COMPILER=/Library/Developer/CommandLineTools/usr/bin/c++' '-DCMAKE_C_COMPILER=/Library/Developer/CommandLineTools/usr/bin/cc' '-DCMAKE_INSTALL_PREFIX=/Users/baidu/work/Paddle/third_party/install/warpctc' '-DWITH_GPU=OFF' '-DWITH_OMP=OFF' '-DWITH_TORCH=OFF' '-DBUILD_SHARED=ON' '-GUnix Makefiles' '/Users/baidu/work/Paddle/third_party/warpctc/src/warpctc'
See also
/Users/baidu/work/Paddle/third_party/warpctc/src/warpctc-stamp/warpctc-configure-*.log
make[2]: *** [../third_party/warpctc/src/warpctc-stamp/warpctc-configure] Error 1
make[1]: *** [CMakeFiles/warpctc.dir/all] Error 2
make: *** [all] Error 2
baidudeMacBook-Pro:build baidu$
具体错误:
1 CMake Error at CMakeLists.txt:2 (cmake_minimum_required):
2 CMake 3.4 or higher is required. You are running version 3.2.3
一般生产环境可能为了规避风险,不会使用高版本系统发行版,所以默认自带的工具相对低端, 所以此处对cmake高版本的要求,可能也给内部用户带来困扰。
但是,上述所有问题,在docker发行下,应该都不会踩到这些坑。 此处,仅做mark。