小编dre*_*zor的帖子

更新到Xcode 7.0后CMake损坏

我在Mac上使用QtCreator和CMake进行c ++开发,在更新到Xcode 7.0后,CMake似乎坏了,运行CMake后我得到了这个警告:

在/usr/local/Cellar/cmake/HEAD/share/cmake/Modules/Platform/Darwin-Initialize.cmake:128的CMake警告(消息):忽略CMAKE_OSX_SYSROOT值:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk

因为该目录不存在.调用堆栈(最近一次调用):/ usr/local/Cellar/cmake/HEAD/share/cmake/Module/CMakeSystemSpecificInitialize.cmake:18(include)CMakeLists.txt:3(项目)

和构建,我收到此错误:

***没有规则来制作目标`/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Accelerate.framework'

我知道Xcode 7.0已经删除了MacOSX10.10.sdk并添加了MacOSX10.11.sdk,所以我认为可能是我的cmake太旧了,我用自制软件更新了我的cmake到3.3.2但是仍然无法工作,是吗有人知道怎么修这个东西吗?谢谢!

macos xcode cmake xcode7

9
推荐指数
3
解决办法
3933
查看次数

无法将MacOS框架与CMake链接

我正在尝试使用cmake构建一个子项目(它不是一个xcode项目,甚至不是iphone的应用程序,结果是跨平台的控制台可执行文件,其中#includes一些继承自C++抽象类,用objective-c ++编写)

我正在使用本指南链接mac os框架:http://www.vtk.org/Wiki/CMake: HowToUseExistingOSXFrameworks

而这个宏:

macro(ADD_FRAMEWORK fwname appname)
find_library(FRAMEWORK_${fwname}
    NAMES ${fwname}
    PATHS ${CMAKE_OSX_SYSROOT}/System/Library
    PATH_SUFFIXES Frameworks
    NO_DEFAULT_PATH)
if( ${FRAMEWORK_${fwname}} STREQUAL FRAMEWORK_${fwname}-NOTFOUND)
    MESSAGE(ERROR ": Framework ${fwname} not found")
else()
    TARGET_LINK_LIBRARIES(${appname} ${FRAMEWORK_${fwname}})
    MESSAGE(STATUS "Framework ${fwname} found at ${FRAMEWORK_${fwname}}")
endif()
endmacro(ADD_FRAMEWORK)
Run Code Online (Sandbox Code Playgroud)

这是CMakeLists.txt中的重要部分

project(myprojectname)
........
add_executable(mytarget src/mytarget.cpp)

add_framework(CoreMedia mytarget)
add_framework(CoreVideo mytarget)
add_framework(AVFoundation mytarget)
add_framework(Foundation mytarget)
........
Run Code Online (Sandbox Code Playgroud)

这就是我在尝试构建时所拥有的:

WARNING: Target "mytarget" requests linking to directory "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/Frameworks/CoreMedia.framework".  Targets may link only to libraries.  CMake is dropping the item.
WARNING: Target "mytarget" requests …
Run Code Online (Sandbox Code Playgroud)

linker frameworks cmake ios

6
推荐指数
1
解决办法
4715
查看次数

如何将 override 关键字添加到大型 C++ 代码库中?

我有一个包含数千个源文件的大型 C++ 代码库。我想override在合适的地方添加关键字。我的一些明显被覆盖的函数实际上并没有覆盖基类中的任何函数,我想抓住这些或至少让它们脱颖而出。

我尝试手动完成,但代码库太大。我尝试使用 clang-modernize,但它没有提供有用的说明。我还担心它无法理解为 Visual Studio 编写的代码库。

如何将 override 关键字添加到我的代码库中,而无需在任务上花费数周或更长时间?

c++ overriding

5
推荐指数
1
解决办法
184
查看次数

在没有压缩的情况下捕获仍然是UIImage(来自CMSampleBufferRef)?

我需要从CMSampleBufferRef 获取UIImage来自未压缩的图像数据.我正在使用代码:

captureStillImageOutput captureStillImageAsynchronouslyFromConnection:connection
 completionHandler:^(CMSampleBufferRef imageSampleBuffer, NSError *error) 
{
    // that famous function from Apple docs found on a lot of websites
    // does NOT work for still images
    UIImage *capturedImage = [self imageFromSampleBuffer:imageSampleBuffer]; 
}
Run Code Online (Sandbox Code Playgroud)

http://developer.apple.com/library/ios/#qa/qa1702/_index.htmlimageFromSampleBuffer功能链接.

但它不能正常工作.:(

有一种jpegStillImageNSDataRepresentation:imageSampleBuffer方法,但它提供压缩数据(好吧,因为JPEG).

UIImage捕获静止图像后,如何使用最原始的非压缩数据创建?

也许,我应该为视频输出指定一些设置?我目前正在使用这些:

captureStillImageOutput = [[AVCaptureStillImageOutput alloc] init];
captureStillImageOutput.outputSettings = @{ (id)kCVPixelBufferPixelFormatTypeKey : @(kCVPixelFormatType_32BGRA) };
Run Code Online (Sandbox Code Playgroud)

我注意到,输出有一个默认值AVVideoCodecKey,即AVVideoCodecJPEG.是否可以以任何方式避免,或者甚至在拍摄静止图像时是否重要?

我在那里找到了一些东西:来自相机的原始图像数据,如"645 PRO",但我只需要一个UIImage,而不使用OpenCV或OGLES或其他第三方.

objective-c avfoundation ios cmsamplebufferref

3
推荐指数
1
解决办法
3238
查看次数

XCode 4.5中最新的Clang位置

我已将XCode更新为4.5(使用iOS 6)并安装了最新的命令行工具.在此之前,我总是拥有最新的Clang版本

/Applications/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin
Run Code Online (Sandbox Code Playgroud)

(clang和clang ++二进制文件),但是现在,随着最后一次更新,它们已经消失,我只有gcc和llvm的东西.我已经在我的Mac上检查了'铿锵'的垃圾箱,并找到了一个

/Applications/XCode.app/Contents/Developer/Toolchains/XCodeDefault.xctoolchain/usr/bin
Run Code Online (Sandbox Code Playgroud)

但为什么呢?首先,为什么我在前一个文件夹中没有clang,它始终是,第二,它是用作'clang的默认位置'这个xctoolchain文件夹的有效方式(例如,对于项目存储库中的cmake)

编辑:对于Xcode 5及更多,clang再次出现在.xctoolchain文件夹中

xcode clang xcode4.5

2
推荐指数
1
解决办法
4694
查看次数

不能在带有Objective-C++代码的c ++类中使用dispatch_sync

我需要在继承C++类,这与iPhone摄像头视频录制(获得作品使用的Objective-C++代码CMSampleBufferRef通过其他本地Objective-C类WrapperCMSampleBufferDelegate).

AVCaptureVideoOutput,我有自己的工作dispatch_queue_t callbackQueue,所以,当我想从我得到的最后一帧Wrapper类,我需要锁定callbackQueue,使其等到复制将完成.

据我所知,已完成dispatch_sync,同步captureOutput.callbackQueue.但我不能让这段代码工作:

// .mm
frame_t MyCppClass::getLastFrame()
{
    dispatch_sync(pCaptureVideoDataOutput.sampleBufferCallbackQueue, ^{ // error: no matching function for call to 'dispatch_sync'

        CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(wrapperInstance->currentBuffer);
        CVPixelBufferLockBaseAddress(imageBuffer,0);

        // doing copying frame data from buffer...

        CVPixelBufferUnlockBaseAddress(imageBuffer, 0);
    }); // error: control may reach end of non-void block

    return frame;
}

// .h
@interface Wrapper : NSObject <AVCaptureVideoDataOutputSampleBufferDelegate> {
  CMSampleBufferRef currentBuffer;
}
@end

// .mm
@implementation …
Run Code Online (Sandbox Code Playgroud)

objective-c objective-c++ grand-central-dispatch ios avcapture

2
推荐指数
1
解决办法
2128
查看次数

等待计时器或条件成为真,然后处理代码?(等待iOS相机调整焦距)

我想在一些条件检查后处理一些代码.首先是一些变量必须是true(我有一个Key-Value Observer分配给它).第二 - 如果该变量尚未变为true一段时间(例如5秒),则永远不要处理变量并只处理代码.

我带来了一个明显的解决方案,我认为这个解决方案很糟糕:while()每次检查true条件和时间都会在另一个调度队列中进行无限循环.所有这些代码都包含在另一个调度队列中......好吧,对我来说并不好看.

我想做的伪代码草案:

WHEN (5 seconds are gone || getCurrentDynamicExpr() == true) {
    processStuff();
} 
Run Code Online (Sandbox Code Playgroud)

什么是正确而简单的方法呢?

编辑

这里看起来很混乱......要更具体一点:

我想,当它集中捕捉镜头,所以我要检查AVCaptureDeviceisAdjustingFocus属性(我使用AVCaptureStillImageOutput),然后捕获了一枪.5秒钟是..好吧,如果它没有聚焦,那么出现问题,所以无论如何都要拍照.

我很抱歉混淆,认为这是非常普遍的事情..

objective-c grand-central-dispatch ios

1
推荐指数
2
解决办法
1万
查看次数

在CMake中枚举控制台参数(argv)

我想在CMake中解析/处理传递的控制台参数,所以如果我在控制台中运行它:

cmake -DCMAKE_BUILD_TYPE=Release -DSOME_FLAG=1 ..
Run Code Online (Sandbox Code Playgroud)

我想获得-DCMAKE_BUILD_TYPE=Release-DSOME_FLAG=1来自这里面的CMake的脚本(通过了所有其他参数)并保存它们的地方.

我想要它的原因是通过自定义CMake脚本(后面调用execute_process(cmake <something>))传递所有参数,例如

cmake -DCMAKE_BUILD_TYPE=Release -P myscript.cmake
Run Code Online (Sandbox Code Playgroud)

cmake argv argc

1
推荐指数
1
解决办法
612
查看次数