5

我正在使用 CMake 生成我的 Makefile,但是我无法使用标准生成 .clang_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")

我在这里做错了什么?

4

4 回答 4

4

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

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

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

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

它应该工作。

于 2013-01-31T18:57:33.307 回答
2

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

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

然后make像往常一样运行。请注意,这将在您每次构建项目时运行 cc_args.py 脚本make,如果您想禁用它,请再次重新运行cmake

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

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

于 2013-01-29T20:22:34.737 回答
1

$HOME/.vim/bin/cc_args.py使用and not很重要~/.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到父目录。

于 2017-10-06T12:32:11.097 回答
0

这对我有用

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

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

于 2016-05-13T09:42:36.407 回答