小编Dan*_*olf的帖子

CMake似乎忽略了CMAKE_OSX_DEPLOYMENT_TARGET

我在OS X 10.10.5上使用CMake 3.3.2和Xcode 7.1.

我有一个使用CMake的小型C++项目.我希望它在OS X 10.9或更高版本上运行.所以我修改了我的CMakeLists.txt来开始这个:

cmake_minimum_required(VERSION 3.3)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9")

project(...
Run Code Online (Sandbox Code Playgroud)

然后我像这样创建Xcode项目:

cmake -G Xcode <path>
Run Code Online (Sandbox Code Playgroud)

但是,生成的xcodeproj软件包似乎没有设置部署目标.当我在文本编辑器中打开包含的project.pbxproj文件时,没有提及行MACOSX_DEPLOYMENT_TARGET.

因此,当我在Xcode中打开项目时,在Build Settings> Deployment> OS X Deployment Target下,Xcode总是显示默认值"OS X 10.11",无论我在CMakeLists.txt中指定了什么.当我手动更改Xcode中的设置,然后在文本编辑器中重新打开项目文件时,MACOSX_DEPLOYMENT_TARGET = 10.9;已正确添加该行.

难道我做错了什么?谷歌搜索问题没有给出任何最近的结果.

c++ xcode cmake

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

如何在C#中获取指向IUnknown的指针

.NET interop将COM对象包装到.NET对象(运行时可调用包装器,RCW)中,这些对象隐藏了通常的接口查询.为了使用运行对象表注册表示过滤器图的COM对象,我需要其IUnknown接口的(本机)地址(请参阅如何对DirectShow图进行反向工程?).

所以问题是:如何在C#中获取COM对象的IUnknown指针?

c# com interop directshow

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

WPF使用BitmapSource渲染性能

我已经创建了一个WPF控件(继承自FrameworkElement),它显示了可以平移的平铺图形.每块瓷砖在24bpp时为256x256像素.我已经超越了OnRender.在那里,我加载任何新的tile(如BitmapFrame),然后使用drawingContext.DrawImage绘制所有可见的tile.

现在,每当渲染周期中有少量新的图块时,帧速率从60fps下降到零大约一秒钟.这不是由加载图像(以毫秒为单位)引起的,也不是由DrawImage(它根本不花时间,因为它只填充一些中间渲染数据结构)引起的.

我的猜测是每当渲染线程获得大量(~20)新的BitmapSource实例(即它尚未缓存的实例)时,它就会扼流圈.要么花费大量时间将它们转换为某种内部DirectX兼容格式,要么它可能是一个缓存问题.它不能用完视频RAM; 穿孔器显示低于60MB的峰值,我有256MB.此外,Perforator说所有渲染目标都是硬件加速的,所以也不可能.

任何见解将不胜感激!

提前致谢

丹尼尔

@RandomEngy:
BitmapScalingMode.LowQuality减少了一点问题,但没有摆脱它.我已经按照预期的分辨率加载了瓷砖.它不能是图形驱动程序,它是最新的(Nvidia).
得知缩放需要花费很多时间,我有点惊讶.我理解它的方式,位图(无论其大小)只是作为Direct3D纹理加载,然后硬件缩放.事实上,一旦第一次渲染位图,我可以改变其旋转和缩放而不会进一步冻结.

wpf performance rendering bitmap

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

如何在忽略元素顺序的 Jest 中比较两个集合?

在 Jest 中编写单元测试时,如何测试数组是否包含任何顺序的预期值?

在 Chai,我可以写:

const value = [1, 2, 3];
expect(value).to.have.members([2, 1, 3]);
Run Code Online (Sandbox Code Playgroud)

Jest 中的等效语法是什么?

javascript unit-testing jestjs

7
推荐指数
2
解决办法
5148
查看次数

如何使用 Kotlin DSL 创建 Fat JAR?

我正在使用 Gradle 5.5。我有一个基于 Groovy 的构建脚本,我正在尝试将其迁移到 Kotlin DSL。该jar任务包含用于将所有依赖项复制到 JAR 文件的典型行:

from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
Run Code Online (Sandbox Code Playgroud)

我找不到将这一行转换为 Kotlin DSL 的方法。

让我给你一些背景。这是我最初的基于 Groovy 的构建脚本:

plugins {
    id "org.jetbrains.kotlin.jvm" version "1.3.41"
}

group = "com.rhubarb_lip_sync"
version = "1.0.0"

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    compile "com.beust:klaxon:5.0.1"
    compile "org.apache.commons:commons-lang3:3.9"
    compile "no.tornado:tornadofx:1.7.19"
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

jar {
    manifest {
        attributes "Main-Class": "com.rhubarb_lip_sync.rhubarb_for_spine.MainKt"
    }

    // This line of …
Run Code Online (Sandbox Code Playgroud)

java gradle kotlin

7
推荐指数
2
解决办法
2718
查看次数

如何在C++/CLI项目中使用代码约定?

我最近偶然发现了Code Contracts,并开始在我的C#项目中使用它们.但是,我还有许多用C++/CLI编写的项目.

对于C#和VB,Code Contracts在项目属性对话框中提供了一个方便的配置面板.对于C++/CLI项目,没有这样的面板.

从文档,我得到的印象是添加代码契约到C++/CLI项目的支持应该是调用一些外部工具作为构建过程的一部分(即一个简单的问题ccrefgen.exe,cccheck.execcrewrite.exe).但是,有关呼叫序列的命令行选项和限制的数量让我有点害怕.

任何人都能指出一种简单的方法来运行Code Contracts工具作为Visual Studio中构建过程的自动化部分吗?

msbuild c++-cli code-contracts

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

Visual C++中的结构对齐

Visual C++提供编译器switch(/Zp)和packpragma来影响struct成员的aligment.但是,我似乎对它们如何运作有一些误解.

根据MSDN,对于给定的对齐值n,

成员的对齐将在边界上,该边界是n的倍数或成员大小的倍数,以较小者为准.

假设包的值为8个字节(这是默认值).在结构体中,我认为任何大小小于8字节的成员都将处于其自身大小的倍数的偏移量.大小为8字节或更大的任何成员将处于8字节的倍数的偏移量.

现在采取以下计划:

#include <tchar.h>

#pragma pack(8)

struct Foo {
    int i1;
    int i2;
    char c;
};

struct Bar {
    char c;
    Foo foo;
};

int _tmain(int argc, _TCHAR* argv[]) {
    int fooSize = sizeof(Foo); // yields 12
    Bar bar;
    int fooOffset = ((int) &bar.foo) - ((int) &bar); // yields 4

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Foo结构是在大小为12个字节.所以在内部Bar,我希望该Foo成员处于偏移8(8的倍数),而实际上它是偏移4.为什么呢?

而且,Foo实际上只有4 + 4 + 1 = 9字节的数据.编译器会在结尾处自动添加填充字节.但是,如果给定8字节的对齐值,它不应该填充到8的倍数而不是4吗?

任何澄清赞赏!

c++ struct visual-c++

6
推荐指数
2
解决办法
9245
查看次数

Webpack 插件:如何向模块动态添加加载器?

我正在编写一个 Webpack 插件。在模块解析期间,此插件应该为某些模块动态添加特定的加载器,但不是所有模块

我现在的想法是利用normal-module-factory'safter-resolve事件。在那里,我可以修改数组data.loaders。一些调试告诉我这个数组包含表单的对象{ loader: string, options: object | undefined }

我找不到任何关于动态修改每个模块加载器的文档。所以我想知道:

  • 这是正确的方法吗?
  • 一些(但不是全部)现有loaders条目包含一个附加属性ident,看起来像这样:'ref--0-0'。我应该什么时候设置这个属性,使用什么值?

javascript webpack

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

根据贝塞尔曲线插值间隔,插值之间的值

为了实现2D动画,我正在寻找两个关键帧之间的插值,其中变化的速度由贝塞尔曲线定义.问题是贝塞尔曲线以参数形式表示,而要求是能够评估特定时间的值.

详细说来,假设10和40的值将在4秒内插值,其值不是经常变化,而是由表示为0,0 0.2,0.3 0.5,0.5 1,1的贝塞尔曲线定义.现在如果我以每秒24帧的速度绘制,我需要评估每帧的值.我怎样才能做到这一点 ?我看了De Casteljau算法并且认为将曲线分成24*4个片段4秒将解决我的问题但是这听起来是错误的,因为时间沿着"x"轴而不是沿着曲线.

进一步简化如果我在平面中绘制曲线,x轴表示时间,y轴表示我正在寻找的值.我实际需要的是能够找出对应于"x"的"y".然后我可以在24个分区中划分x并知道每个帧的值

math animation bezier core-animation

5
推荐指数
2
解决办法
2832
查看次数

比较值和参考值

考虑下面的 Rust 函数,它的目的是指示给定的 3 字节字符串是否等于b"foo"

fn is_foo(value: [u8; 3]) -> bool {
    value == b"foo"
}
Run Code Online (Sandbox Code Playgroud)

这不起作用:

错误[E0277]:无法[u8; 3]比较&[u8; 3]

编译器抱怨它无法将某种类型的值与相同类型的引用进行比较。

我发现了两种让平等检查发挥作用的方法:

  • 首先将值转换为 ref:&value == b"foo"
  • 首先将 ref 转换为值:value == *b"foo"

来自 C++(其中值和引用几乎是同一件事),这两种方法对我来说看起来都有点奇怪。比较值和引用的最惯用的方法是什么?

rust

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