我正在使用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")
我在这里做错了什么?
答案 0 :(得分:4)
看起来与make
相反cmake
不会扩展波浪号,因此它将视为路径的一部分。要使其按预期工作,请使用cc_args.py
脚本的绝对路径或在命令中执行两个简单的更改:
$HOME
。更改后,您的命令应如下所示:
CXX="$HOME/.vim/bin/cc_args.py g++" cmake ..
它应该有用。
答案 1 :(得分:2)
你应该(在你的构建目录中)运行
CXX='~/.vim/bin/cc_args.py g++' cmake ..
然后像往常一样运行make
。请注意,每次使用make
构建项目时,这将运行cc_args.py脚本,如果要禁用此项,请再次重新运行cmake
。
将在构建目录中创建文件.clang_complete
,并在需要时移动它。
答案 2 :(得分:1)
使用$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
文件。
事实上,没有出现" cc_args"在生成的CMakeCache.txt / Makefile中,所以我怀疑 CXX
不是传递给cmake的正确变量名。
完成后,将.clang_complete
复制到父目录。
答案 3 :(得分: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。