从cmake中的build目录中找到源目录

问题描述 投票:0回答:2

我想创建一个 bash 帮助程序脚本来将生成的文件与其源进行比较。输出的目录结构与源匹配,因此如果我有此数据,我应该能够找到源文件的名称:

  • 生成的文件的名称(这将传递给脚本)
  • CMAKE_PROJECT_SOURCE_DIR(我需要找到这个)

我的计划是:

  • 在目录树中搜索 CMakeCache.txt 文件。
  • 当/如果找到的话,运行 CMake 以某种方式打印出源代码的路径

我该怎么做?最好不需要配置/生成(因为这会引入一点延迟)。 我应该 grep 构建文件夹中的特定文件吗?哪一个?

bash scripting cmake
2个回答
3
投票

找到

CMakeCache.txt
后,您可以通过以下方式 grep 查找其中的项目源目录:

cat CMakeCache.txt | grep -E '.*_SOURCE_DIR:STATIC=.*' | grep -E -o '/.*'

这会输出 _SOURCE_DIR 变量的值。


0
投票

您可以在 CMakeCache.txt 中 grep 查找主目录:

grep CMAKE_HOME_DIRECTORY CMakeCache.txt | cut -d = -f2-

我的cmake版本:

$ cmake --version
cmake version 3.28.1
© www.soinside.com 2019 - 2024. All rights reserved.