这个没用选择使用最新版本的folly,而是原则了v2018.09.10.00(没有为什么,主要不是想选最新的!)
下载tar.gz源码包:https://github.com/facebook/folly/archive/v2018.09.10.00.tar.gz
1:按照read.me文件安装相关依赖
2:mkdir _build && cd _build cmake ..
make
为了指定安装位置,在这里make之后,在_build文件下,找到cmake_install.cmake文件,
修改
set(CMAKE_INSTALL_PREFIX "/usr/local")
为这个:
set(CMAKE_INSTALL_PREFIX "/home/liu/桌面/Folly/folly-2018.09.10.00/Folly")
其中"/home/liu/桌面/Folly/folly-2018.09.10.00/Folly"是自己指定的一个安装文件夹目录,然后进行下一步 make install。
(主要是我在命令中指定CMAKE_INSTALL_PREFIX参数时,没有安装成功,才这样修改的,知道如何指定这个参数的,欢迎留言!)
make install
3:编写测试文件,folly给了详细的测试代码,这里仅仅摘取了一部分的代码。
#include "Include/folly/FBVector.h" #include "Include/folly/FBString.h" #include "Include/folly/portability/GTest.h" #include "Include/folly/container/Foreach.h" using namespace std; using namespace folly; int main() { fbvector<int> v(10, 20); EXPECT_EQ(v.size(), 10); FOR_EACH (i, v) { EXPECT_EQ(*i, 20); } FOR_EACH(i,v) {cout << *i << endl;} }
4:CMakeLists.txt文件
cmake_minimum_required(VERSION 3.17) project(NewFolly) set(CMAKE_CXX_STANDARD 14) include_directories(Include) file(GLOB Folly Include/*) link_directories(Lib) link_libraries(folly) link_libraries(folly_test_util) link_libraries(gtest) link_libraries(follybenchmark) link_libraries(glog) link_libraries(pthread m) link_libraries(ssl crypto) link_libraries(gflags) add_executable(NewFolly main.cpp ${Folly})
注意这里链接库的顺序,有依赖关系,不可颠倒了顺序,详细的依赖的关系,我也不知道。
set(folly_DIR /home/liu/Desktop/folly/f3y/lib/cmake/folly) find_package(folly) add_executable(Learn main.cpp) if(folly_FOUND) target_link_libraries(Learn Folly::folly) else(folly_FOUND) message(FATAL_ERROR ”Folly library not found”) endif(folly_FOUND) #如果没有gflag_share,则需要换成gflag
附录:项目目录结构
编译过程:很顺利,简单记录一下。
欢迎加入folly库交流群:884935898,目前只有群主,哈哈哈哈哈哈!
代码地址:github:https://github.com/NEU-Liu/HelloFolly
没有上传libfolly.a,因为这个静态库200多M,即使上传了,你也不能直接用,你仍然需要把相关的其他依赖!