我正在使用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
脚本的绝对路径,或者在命令中做两个简单的更改:
- 将波浪号替换为
$HOME
- 用双引号替换单引号
更改后,您的命令应该如下所示:
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。