我正在尝试按照此link
在我的Mac上安装OpenCV但是,当我在终端上键入cmake -G "Unix Makefiles" ..
时,会打印出此错误。
- CXX编译器标识未知 - C编译器标识未知 - 检查CXX编译器是否正常工作:/ usr / bin / c ++ - 检查工作CXX编译器:/ usr / bin / c ++ - 在/opt/local/share/cmake-3.0/Modules/CMakeTestCXXCompiler.cmake:54中损坏的CMake错误 (消息):C ++编译器“/ usr / bin / c ++”无法编译 简单的测试程序。
它失败并显示以下输出:
更改目录:/ Users / kwmaeng / Desktop / opencv / build / CMakeFiles / CMakeTmp
运行Build命令:“/ usr / bin / make”“cmTryCompileExec653545098 / fast”
make:错误:无法找到实用程序“make”,而不是开发人员工具或 在PATH
CMake无法正确生成此项目。呼叫 Stack(最近一次调用):CMakeLists.txt:56(项目)
- 配置不完整,发生错误!另请参阅“/Users/kwmaeng/Desktop/opencv/build/CMakeFiles/CMakeOutput.log”。看到 还有“/Users/kwmaeng/Desktop/opencv/build/CMakeFiles/CMakeError.log”。
所以我检查了CMakeError.log,这是内容
编译CXX编译器标识源文件 “CMakeCXXCompilerId.cpp”失败了。编译器:/ usr / bin / c ++构建标志: Id标志:
输出为:72 xcodebuild:错误:SDK “/ Volumes / MAC / dev / adt-bundle-mac-x86_64-20131030 / sdk”不能 位于。 c ++:错误:无法找到实用程序“clang ++”,而不是开发人员 工具或PATH ......(等等)
奇怪的是,/Volumes/MAC/dev/adt-bundle-mac-x86_64-20131030/sdk
是安装我的Android SDK的地方,现在已被删除,因此不再有这样的文件夹了。是否发生错误是因为cmake指的是不再存在的无效路径?为什么cmake首先引用android sdk的位置?对opencv来说是否重要?
提前致谢。
答案 0 :(得分:3)
感谢大家的帮助,我能够解决我的问题。
对于将来可能遇到同样问题的其他人,这就是我所做的:
这是因为我的$PATH
搞砸了(我认为这是在我尝试将Android SDK添加到$PATH
时发生的)
我清除了.bash_profile
并添加了C ++并制作了/opt/local/bin
,/opt/local/sbin
export PATH=$PATH:/opt/local/bin:/opt/local/sbin:/usr/bin/c++:/usr/bin/make
它就像魅力一样。
答案 1 :(得分:2)
我遇到了同样的问题 - 有效的方法是删除命令行工具:
rm -rf /Library/Developer/CommandLineTools
然后重新安装命令行工具:
xcode-select --install
谁知道那个剧本正在做什么......我没有时间去调查所以你去......
答案 2 :(得分:1)
我找到了另一个解决方案:将set(CMAKE_C_COMPILER gcc)
放在CMakeLists.txt
的最顶端。作为参考,我在安装CLion更新后立即收到此错误。
这是我的最终CMakeLists.txt
:
set(CMAKE_C_COMPILER gcc)
cmake_minimum_required(VERSION 3.6)
project(...)
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES XXX.cpp)
add_executable(... ${SOURCE_FILES})
答案 3 :(得分:0)
我也遇到过这个问题,我已经通过设置正确的CXXFLAGS和CPPFLAGS来修复它。我想你也应该检查一下。
一个简单的解决方案是:
CPPFLAGS := $(CPPFLAGS) $(CFLAGS)
CXXFLAGS := $(CXXFLAGS) $(CFLAGS)
答案 4 :(得分:0)
对我来说,我的第一个问题是我没有Xcode命令行工具。所以我得到了那些(xcode-select --install
在终端中),我仍然遇到了问题。解决方案?关闭终端窗口并创建一个新窗口。那么,瞧!
答案 5 :(得分:-1)
我也遇到了这个问题并且已经解决了。
代码是:
NSMutableArray *names = [NSMutableArray new];
NSArray *statuses = [json objectForKey:@"status"];
for(NSDictionary *status in statuses){
NSString *bussiness_category=[status valueForKey:@"business_category_name"];
for(NSDictionary *details in [status objectForKey:@"business_details"]){
NSString *name=[details valueForKey:@"name"];
[names addObject:name];
}
}