通过 CMake 添加子项目
Add a subproject by CMake
Apache Arrow 子模块存储在 thirdparty/apache_arrow/cpp
,所以我的主 CMakeLists.txt 看起来像
cmake_minimum_required(VERSION 3.0.0)
project(arrow_parcer VERSION 0.1.0)
add_subdirectory(src)
add_subdirectory(thirdparty/apache_arrow/cpp)
在 thirdparty/apache_arrow
处存储了整个 Apache Arrow 项目。
当我尝试构建项目时,最后的输出行如下:
[cmake] CMake Error: INSTALL(EXPORT) given unknown export "arrow_targets"
[cmake] Generating done
[cms-driver] Error during CMake configure: [cmake-server] Failed to compute build system.
Apache Arrow 可以通过 CMakeLists.txt 在 /cpp
文件夹中轻松构建,但是如果我尝试通过 add_subdirectory
包含它,为什么会出现错误?
Apache Arrow C++ 不适合使用 add_subdirectory
构建,相反您应该使用 CMake 的 ExternalProject_Add
facility 构建它:
ExternalProject_Add(arrow_ep
URL "https://www.apache.org/dist/arrow/arrow-0.15.1/apache-arrow-0.15.1.tar.gz"
SOURCE_SUBDIR cpp)
除了使用 URL
,您还可以使用 GIT_REPOSITORY
等不同的提供商。
如果您真的不需要设置安装,这里有一种 hack-y 方法可以做到这一点。在 CMakeLists.txt
添加箭头的源目录中,您定义自己的 install
.
function(install)
endfunction()
add_subdirectory(${arrow_SOURCE_DIR}/cpp ${arrow_BINARY_DIR})
Apache Arrow 子模块存储在 thirdparty/apache_arrow/cpp
,所以我的主 CMakeLists.txt 看起来像
cmake_minimum_required(VERSION 3.0.0)
project(arrow_parcer VERSION 0.1.0)
add_subdirectory(src)
add_subdirectory(thirdparty/apache_arrow/cpp)
在 thirdparty/apache_arrow
处存储了整个 Apache Arrow 项目。
当我尝试构建项目时,最后的输出行如下:
[cmake] CMake Error: INSTALL(EXPORT) given unknown export "arrow_targets"
[cmake] Generating done
[cms-driver] Error during CMake configure: [cmake-server] Failed to compute build system.
Apache Arrow 可以通过 CMakeLists.txt 在 /cpp
文件夹中轻松构建,但是如果我尝试通过 add_subdirectory
包含它,为什么会出现错误?
Apache Arrow C++ 不适合使用 add_subdirectory
构建,相反您应该使用 CMake 的 ExternalProject_Add
facility 构建它:
ExternalProject_Add(arrow_ep
URL "https://www.apache.org/dist/arrow/arrow-0.15.1/apache-arrow-0.15.1.tar.gz"
SOURCE_SUBDIR cpp)
除了使用 URL
,您还可以使用 GIT_REPOSITORY
等不同的提供商。
如果您真的不需要设置安装,这里有一种 hack-y 方法可以做到这一点。在 CMakeLists.txt
添加箭头的源目录中,您定义自己的 install
.
function(install)
endfunction()
add_subdirectory(${arrow_SOURCE_DIR}/cpp ${arrow_BINARY_DIR})