clang complete - .clang_complete and CMake?



我正在使用CMake生成我的Makefile,但我无法使用标准生成.crang_complete

make CC='~/.vim/bin/cc_args.py gcc' CXX='~/.vim/bin/cc_args.py g++' -B

没有生成任何内容。。。

树形结构看起来像

Root
 |
 |_core
 |  |_src
 |  |  |_main.cpp
 |  |  |_CMakeLists.txt (1)
 |  |_inc
 |  |_CMakeLists.txt (2)
 |
 |_lib
 |  |_rtaudio
 |
 |_CMakeLists.txt (3)

CMakeLists.txt(1(文件:

 include_directories("${Dunkel_SOURCE_DIR}/core/inc")
include_directories("${Dunkel_SOURCE_DIR}/lib/")
link_directories("${Dunkel_SOURCE_DIR}/lib/rtaudio")
add_executable(Dunkel main.cpp)
target_link_libraries(Dunkel rtaudio)

CMakeLists.txt(2(文件:

subdirs(src)

CMakeLists.txt(3(文件:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(Dunkel)
SUBDIRS(core)
set(CMAKE_CXX_FLAGS "-g")

我在这里做错了什么?

看起来与make相反,cmake没有展开波浪号,因此它将is视为路径的一部分。要使其按预期工作,请使用cc_args.py脚本的绝对路径,或者在命令中做两个简单的更改:

  1. 将波浪号替换为$HOME
  2. 用双引号替换单引号

更改后,您的命令应该如下所示:

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

它应该起作用。

您应该(在构建目录中(运行

CXX='~/.vim/bin/cc_args.py g++' cmake ..

然后像往常一样运行CCD_ 5。请注意,每次使用make构建项目时,这都会运行cc_args.py脚本,如果要禁用此功能,请再次运行cmake

文件.clang_complete将在构建目录中创建,如果需要,请将其移动。

另请参阅Vim:使用CMake 创建.crang_complete

使用$HOME/.vim/bin/cc_args.py而不是~/.vim/bin/cc_args.py很重要,因为引用~时可能无法展开。

此外,使用以下工具验证python脚本的存在:

$ ls -l $HOME/.vim/bin/cc_args.py
-rwxr-xr-x  1 myself  staff  2270 Sep 19 16:11 /home/myself/.vim/bin/cc_args.py

如果找不到,请根据需要调整python脚本路径。

在构建目录中运行make clean

正如@xaizek所建议的,从一个空的构建目录开始(假设构建目录是源目录的子目录(:

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

然后是:

make

此时,make将构建项目,但调用cc_args.py(它将调用g++(,而不是直接调用g++

然而,对我来说,这部分无法工作,并且在构建目录或其他任何地方都没有创建.clang_complete文件。

事实上,在生成的CMakeCache.txt/Makefile中没有出现"cc_args",所以我怀疑CXX不是传递给cmake的正确变量名

完成后,将.clang_complete复制到父目录。

以下是

sudo chmod a+x $HOME/.vim/bin/cc_args.py
CXX="$HOME/.vim/bin/cc_args.py  g++"  sudo cmake ..
sudo make

然后ls-a显示我的.crang_complete文件,但仍然是emtyp。

最新更新