我正尝试在我的开发系统上建立最新的GNURAdio软件包。不幸的是,这个系统配置受到严格控制,我不能在上面安装新的软件包,因为它是用来开发产品的,所有的开发系统都是同步的。我们目前使用的是旧版本的RedHat。
虽然我不能修改系统包含,但我可以下载并在本地使用更新版本的包(在非系统目录中),只要这不影响产品的构建/调试环境。
然而,在构建GNURAdio时,我发现我们的开发平台使用的Boost库版本比构建GNURAdio所需的版本要旧。(home)目录。我找到了几个指导,我想,指导CMake使用附加的包含目录。不幸的是,CMake一直抱怨它找到的是旧版本的Boost,而不是我在本地提取的新版本。
我试过使用
-DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=<dir>
和
-DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES_BEFORE=<dir>
然后我尝试将以下内容添加到顶级CMakeLists.txt文件中:
SET(CMAKE_INCLUDE_DIRECTORIES_BEFORE ON)
SET(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES <dir>)
或者,甚至
include_directories(BEFORE <dir>)
同样,没有欢乐。
我做了一点挖掘,发现有一个Grboost.cmake模块,它有一个额外的boost目录配置,所以我添加了以下内容:
list(PREPEND BOOST_LIBRARYDIR "<dir>")
到文件的最上面,还是没找到
我以前从来没有使用过CMake(如果没有必要的话,我也不想学习另一个构建系统--我们公司刚刚改用bazel,我正在加快速度),所以我在这里是盲目的。
我必须做什么才能让CMake在我的本地目录中查找我下载的Boost内容?
1条答案
按热度按时间of1yzvn41#
好吧。就像经常发生的那样,刚问完问题我就能找到答案。
原来CMake(
CMAKE_PREFIX_PATH=<dir>
)有一个命令行选项,您可以在其中指定额外的基本路径来搜索CMake配置文件。我甚至不知道Boost有这样的配置文件。活到老学到老。
@vre的评论可能也会同样有效(事实上,可能更好)。