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
我想让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