clang complete - CMake and clang_complete



我想设置我的CMakeLists.txt文件,以便它可以生成vim插件clang_complete所需的.crang_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++"。这里出现的错误表明它找不到编译器(这是可以理解的)。

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

因此,在不编写任何其他需要四处移动的外部脚本的情况下,有人能想出一种方法来做到这一点吗?

解决方案是在执行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/了解更多详细信息。

我知道你说过"不写任何其他外部脚本",但似乎你只需要一行代码:

exec cc_args.py g++

然后将该文件设置为您的CMAKE_CXX_COMPILER。如果你不想分发它,你甚至可以在构建时使用CMake的file()函数来编写一行

最新更新