CLion with Cygwin:g ++。exe ... / compiler-arguments.txt:没有这样的文件或目录错误

时间:2016-11-07 22:15:43

标签: c++ cygwin clion

在使用Cygwin的CLion中,当我尝试打开某个c ++项目时,在解析项目的CMake文件时出现以下错误:

Error:Configuration emdw [Debug]
Compiler exited with error code 1: g++ -xc++ -Demdw_EXPORTS -I/cygdrive/c/Users/Dirk/.CLion2016.2/system/cmake/generated/emdw-e21eebc3/e21eebc3/Debug/src -I/cygdrive/f/devel/emdw/src -I/cygdrive/f/devel -I/cygdrive/f/devel/patrecII/src -std=c++11 -O3 -g -Wall -v -dD -E
g++.exe: error: @/cygdrive/f/users/heetbeet/AppData/Local/Temp/compiler-arguments.txt: No such file or directory
g++.exe: error: /cygdrive/f/users/heetbeet/AppData/Local/Temp/compiler-file: No such file or directory
g++.exe: fatal error: no input files
compilation terminated.

我认为CLion生成这些类型的compiler-arguments.txt / compiler-file文件,因为在实际的CMake结构中没有找到这样的指令。请注意,我可以从Cygwin的bash成功运行cmake.exe这个项目,没有任何错误。

CLion尝试使用compiler-arguments.txt文件(如果是CLion)实现了什么魔力,如何开始调试此问题?

我可以在点击CLion中的Reload CMake Project按钮后确认

enter image description here

名为compiler-arguments.txtcompiler-file的两个文件确实是在F:\users\heetbeet\AppData\Local\Temp中创建的(在Cygwin中为/cygdrive/f/users/heetbeet/AppData/Local/Temp/

compiler-arguments.txt的内容是:

-xc++ -Demdw_EXPORTS -I/cygdrive/c/Users/Dirk/.CLion2016.2/system/cmake/generated/emdw-e21eebc3/e21eebc3/Debug/src -I/cygdrive/f/devel/emdw/src -I/cygdrive/f/devel -I/cygdrive/f/devel/patrecII/src -std=c++11 -O3 -g -Wall -v -dD -E -D___CIDR_IGNORE_DEFINITIONS_START

compiler-file包含一堆#if个,#ifdef,其前20行为:

#define ___CIDR_IGNORE_DEFINITIONS_END
#if !(defined (__has_extension)) && defined(__has_feature)
  #define __has_extension __has_feature
#endif
#if !defined(__has_attribute)
  #define __has_attribute(x) 0
#endif
#ifdef __has_feature
#if __has_feature(cxx_constexpr)
____CIDR_test_query_feature->cxx_constexpr=1
#else
____CIDR_test_query_feature->cxx_constexpr=0
#endif
#if __has_feature(cxx_trailing_return)
____CIDR_test_query_feature->cxx_trailing_return=1
#else
____CIDR_test_query_feature->cxx_trailing_return=0
#endif
#if __has_feature(c_generic_selections)
____CIDR_test_query_feature->c_generic_selections=1
<...>

1 个答案:

答案 0 :(得分:1)

我们需要以某种方式创建源文件的AST。为了使其正确,我们需要特定于编译器的宏和项目中的FOR EACH c / cpp-file功能,因为您可以更改每个宏的编译器选项。这就是您为跨平台项目中的正确突出显示和宏观评估所付出的代价。

关于此问题:您正在使用cygwin,我觉得问题可以通过chmod 777调用解决。