我想在我的项目中构建g旗子和glog。下面你可以看到密码。我编译几乎没有问题,但是由于一些兼容性错误,我会遇到不同的致命错误,这取决于我尝试在哪个glog版本中使用哪个g频标志版本。如图所示,出现了错误。
./src/glog/stl_logging.h:56:11:致命错误:“ext/slist”文件找不到# include “)
我发现了令人骄傲的信息
现在,glog的ABI环绕标志与g阻击兼容
现场,宣布glog 0.3.3 https://code.google.com/p/google-glog/
但我不知道哪个版本的旗子。(我觉得很奇怪,因为glog依赖于g标志)
# Install GFlags
ExternalProject_Add(
GFlagsLib
URL https://github.com/gflags/gflags/archive/master.zip
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
)
ExternalProject_Get_Property(GFlagsLib install_dir)
include_directories(${install_dir}/include)
set(GFLAGS_LIBRARIES ${install_dir}/lib/libgflags.${link_library_suffix})
set(GFLAGS_PREFIX ${install_dir})
# Install GLog
ExternalProject_Add(
GLogLib
URL http://google-glog.googlecode.com/files/glog-0.3.3.tar.gz
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --with-gflags=${GFLAGS_PREFIX}
)
ExternalProject_Get_Property(GLogLib install_dir)发布于 2017-07-27 04:06:47
我知道这是个老问题,但我想我会尝试一下,以防来自未来的人有类似的问题。首先,看起来您正在从GitHub和glog从旧的Google托管站点中提取g旗子。在发布这个问题时,glog已经转移到GitHub,并发布了一个更新的版本(0.3.4)。这可能是不兼容的原因之一。
接下来,尽管CMake的ExternalProject_Add()函数对于包管理很有用,但它常常导致不得不通过ExternalProject_Get_Property()提交自己版本的find_package(),以标识后续目标的头和库位置。正如你所看到的,我也经历过同样的头痛,它会变得相当脆弱。
最近,我开始使用亨特包管理器来处理C++项目中的依赖关系,我可以推荐它作为一个很好的替代方案。我已经在我自己的项目中使用它来标记、日志和其他库。每个Hunter版本都锁定包版本(通过调用带有适当参数的HunterGate() ),以帮助确保成功和可重复的构建。
也许是由于来自Python (pip)和Node.js (npm)的竞争,C++包管理在最近有了很大的改进。如果你感兴趣的话,你也应该看看Conan.io (来自JFrog)和Buckaroo (来自Facebook)。
https://stackoverflow.com/questions/33859677
复制相似问题