CMake和clang_complete

时间:2013-02-21 11:45:13

标签: cmake clang-complete

我想设置我的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说它无法编译测试程序(考虑到脚本不是编译器,测试不使用我设置的标志,我对此并不感到惊讶)。

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

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:1)

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

exec cc_args.py g++

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