1、下载源码,在Linux机器上手动编译
参考链接:https://github.com/apache/orc
mkdir build
cd build
cmake ..
make package
-
在编译的过程中 会下载项目依赖的第三方库的源码,并编译
-
可能遇到某些第三方包无法下载的问题,可以手动下载之后,把包名放在对应的目录下
-
编译完成之后 会在build目录中生成很多文件
-
包括依赖的第三方库文件,在目录:${CMAKE_BINARY_DIR}/c++/libs/thirdparty,
2、clion配置注意事项
如果clion使用的是远程编译,先把源码同步下来
因为手动cmake编译选择 目录是build目录,所以clion使用cmake 工具链时,也选择build目录
使用idea打开java目录,发现找不到类org.apache.orc.OrcProto,这个类是在手动编译时自动生成的,位置在如下图:
把包含OrcProto.java 文件的org目录复制到idea的core maven工程下
3、项目中用的cmake语法解释
C++项目一般使用cmake生成跨平台打包文件(包括makeFile等等)
cmake 不编译源码,它只生产编译源码的中间产物,如makeFile 文件
find_path的使用说明
//在指定目录(${CMAKE_SOURCE_DIR}/include)下查找add.h文件,如果找到将路径返回给ADD_INCLUDE_DIR
find_path(ADD_INCLUDE_DIR add.h ${CMAKE_SOURCE_DIR}/include
find_library的使用说明
//在指定目录(${CMAKE_SOURCE_DIR}/lib)下查找add库,如果找到将路径返回给ADD_LIBRARY,
//NAMES : 要查找的库名字,可以有多个
//PATHS:查找的路径,可以有多个
find_library(ADD_LIBRARY NAMES add PATHS ${CMAKE_SOURCE_DIR}/lib)
find_package说明
用于查出第三方库
比如 :
find_package(Add) 当运行这行代码的时候cmake会去路径 CMAKE_MODULE_PATH 下去找:FindAdd.cmake 并运行
也可以查找系统库,如下:
FIND_PACKAGE(Threads REQUIRED)
target_include_directories 、target_link_libraries说明
target_include_directories(main PRIVATE ${ADD_INCLUDE_DIR})
target_link_libraries(main ${ADD_LIBRARY})
为目标程序main 添加include的头文件列表,添加lib文件列表
if (BUILD_CPP_TESTS) 判断全局变量BUILD_CPP_TESTS是否定义了