cmake如何打印项目依赖的库的头文件路径?

How does cmake print the path of the header file of the library the project depends on?

我想让cmake输出项目依赖的库的头文件路径,交给ctags生成标签

我试过直接生成系统所有头文件的标签:ctags -R /usr/include,但是生成的标签文件大小为190MB,太大了。

比如项目中使用了libcurl,那么让cmake输出/usr/include/curl,然后ctags就可以ctags -R /usr/include/curl.

我查看了 cmake --help,但没有找到我要找的东西。我怎样才能做到这一点?

生成 compile_commands.json。解析 compile_commands.json,提取所有 "command": 键,从编译命令中提取所有 -I<this paths> 包含路径,相对于构建目录解释它们。 sort -u 列表。

$ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 ...
$ jq -r '.[] | .command' "$builddir"/compile_commands.json |
     grep -o -- '-I[^ ]*' |
     sed 's/^-I//' |
     sort -u |
     ( cd "$builddir" && xargs -d '\n' readlink -f ) |
     sort -u