2

我想设置我的 CMakeLists.txt 文件,以便它可以生成 vim 插件 clang_complete 所需的 .clang_complete 文件。

通常,您可以通过将参数传递给它与编译器一起提供的 python 脚本以及用于编译的所有参数来执行此操作。请注意,我省略了 cc_args.py 所在的实际目录以节省空间。

cc_args.py gcc test.c -o test -I~/IncludeDirs/

您也可以在制作阶段执行此操作...

make CC='cc_args.py gcc' CXX='cc_args.py g++'

但是,我不确定如何(如果可能的话)在 CMakeLists.txt 文件中进行设置。每次我想设置 clang_complete 时都必须输入这个真的很烦人。我想这样做的原因是因为我有多个项目,我使用自定义脚本来构建 CMakeLists.txt 文件,因此必须为每个项目编写一个脚本或手动放置一个通用脚本是我的一个步骤想避免。

我已经尝试了一些迄今为止出现错误的事情。

我尝试将 CMAKE_CC_COMPILER 和 CMAKE_CXX_COMPILER 设置为类似于第一行的行,即“cc_args.py g++”。这里出现的错误说它找不到编译器(这是可以理解的)。

我尝试的下一件事是将编译器变量设置为 cc_args.py 并为实际编译器添加一个标志:可以说,这非常失败。CMake 说它无法编译测试程序(考虑到脚本不是编译器,并且测试不使用我设置的标志,我对此并不感到惊讶)。

因此,无需编写任何其他需要移动的外部脚本,有没有人可以想到一种可以做到这一点的方法?

4

2 回答 2

2

解决方法是在执行cmake之前设置好CXX环境变​​量。像这样的东西:

CXX="$HOME/.vim/bin/cc_args.py clang++" cmake ..
make

有关更多详细信息,请参阅http://www.guyrutenberg.com/2013/01/29/vim-creating-clang_complete-using-cmake/

于 2014-01-06T14:18:09.803 回答
1

我知道您说“不编写任何其他外部脚本”,但似乎您只需要一个单行:

exec cc_args.py g++

然后将该文件设置为您的 CMAKE_CXX_COMPILER。file()如果您不想分发它,您甚至可以使用 CMake 的功能在构建时编写单行代码。

于 2013-02-21T13:32:37.203 回答