小编Tal*_*ion的帖子

使用CMake编译iOS版

我使用CMake作为构建工具编译了一个C++静态库,我想将它链接到我的iOS应用程序.
我在Xcode中创建了一个简单的"Empty"应用程序,并将我的库libengine.a链接到它.
我试图编译我的iOS项目,链接器给了我这个警告:

ignoring file /Users/.../build/engine/libengine.a, 
file was built for archive which is not the architecture being linked (i386):
/Users/.../build/engine/libengine.a
Run Code Online (Sandbox Code Playgroud)

据我所知,我需要为ARM处理器编译我的库.问题是我不知道怎么做.
我认为CMake真的缺乏很好的教程.
无论如何,我的CMake脚本附在下面.

任何帮助将不胜感激.
谢谢,塔尔.

这是我的主要CMake脚本:

cmake_minimum_required(VERSION 2.8)

project(movie-night)

if (DEFINED PLATFORM)
    include(toolchains/ios.cmake)
endif()

add_definitions(-Wall)

set(DEBUG)

if (DEFINED DEBUG)
    add_definitions(-g)
endif()

if (DEFINED RELEASE)
    add_definitions(-O3)
endif()

add_subdirectory(engine)
add_subdirectory(ui)

add_subdirectory(test)
Run Code Online (Sandbox Code Playgroud)

这是我的toolchains/ios.cmake文件:

set(CMAKE_SYSTEM_NAME Darwin)
set(CMAKE_SYSTEM_PROCESSOR arm)
Run Code Online (Sandbox Code Playgroud)

c++ arm compilation cmake ios

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

Boost.Variant与虚拟接口性能

我正在尝试测量使用Boost.Variant和使用虚拟接口之间的性能差异.例如,假设我想统一增加不同类型的数字,使用Boost.Variant我将使用boost :: variant而不是int和float以及一个静态访问者,它们会增加每一个.使用类接口我将使用纯虚拟类号和number_int和number_float类,它们从中派生并实现"增量"方法.

从我的测试来看,使用接口比使用Boost.Variant要快得多.我在底部运行代码并收到以下结果:
虚拟:00:00:00.001028
变体:00:00:00.012081

为什么你认为这种差异是什么?我认为Boost.Variant会快得多.

**注意:通常Boost.Variant使用堆分配来保证变量始终为非空.但我在Boost.Variant文档中读到,如果boost :: has_nothrow_copy为true,那么它不会使用堆分配,这应该会使事情显着加快.对于int和float boost :: has_nothrow_copy为true.

这是我用于衡量两种方法的代码.

#include <iostream>

#include <boost/variant/variant.hpp>
#include <boost/variant/static_visitor.hpp>
#include <boost/variant/apply_visitor.hpp>

#include <boost/date_time/posix_time/ptime.hpp>
#include <boost/date_time/posix_time/posix_time_types.hpp>
#include <boost/date_time/posix_time/posix_time_io.hpp>

#include <boost/format.hpp>

const int iterations_count = 100000;

// a visitor that increments a variant by N
template <int N>
struct add : boost::static_visitor<> {
    template <typename T>    
    void operator() (T& t) const {
        t += N;
    }
};

// a number interface
struct number {        
    virtual void increment() = 0;
};

// …
Run Code Online (Sandbox Code Playgroud)

performance virtual boost interface variant

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

C++:std :: chrono或boost :: chrono


我在我的代码中做了一些基准测试,我想弄清楚我是否应该使用标准版的chrono或Boost提供的原始版本.
我开始使用标准的,因为我想尝试一下,并注意到例如它不提供像Boost提供的计时器之类的io功能.
那么,关于计时和一般情况下,我应该使用Boost库还是它们的标准库对应物?

c++ boost stl c++-chrono

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

在QML插件中注册C++抽象类,并从QML引用它


我正在写一个Qt应用程序.
我将我的应用程序分离为QML前端和C++插件后端.
在我的C++插件中,我有一个Session抽象类,我想向QML公开,我也有一些该类的实现.
我希望我的QML前端只知道Session类,而不是被它的哪种会话的具体细节所困扰.
我尝试了qmlRegister*的一些变体来用QML注册我的Session类型,但是Session需要具体(如在qmlRegisterType的情况下)或者它注册正常但是我根本无法在property Session session没有实例化Session的情况下从QML引用Session类型来自QML.
有谁知道我应该怎么做?

更新:
一个不起作用的例子:
在main.cpp中:

char const* const uri = "com.nogzatalz.Downow";
qmlRegisterUncreatableType<downow::Session>(uri, 1, 0, "Session", "Abstract type");
Run Code Online (Sandbox Code Playgroud)

在DowNow.qml中:

import QtQuick 2.0
import com.nogzatalz.Downow 1.0

Item {
    property Session session
}
Run Code Online (Sandbox Code Playgroud)

c++ qt abstract-class qml

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

Maven-安装项目依赖项而无需构建

我有一个POM文件,我想安装构建项目所需的所有插件/ jar,而无需构建项目,因此当我运行“ maven软件包”时,不需要Internet连接。
有什么办法吗?

java pom.xml maven

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

C++:有没有办法创建模板化的命名空间?

我想知道是否有可能做到以下几点:

template <typename T>
namespace basic_foo {
    struct str {
        T value;
    };
}

basic_foo<char>::str s1;
namespace foo = basic_foo<char>;
foo::str s2;
Run Code Online (Sandbox Code Playgroud)

是否可以在任何c ++编译器中执行此操作?
是否有工作要做到这一点?
我认为这对语言来说是一个很好的补充.

提前致谢.

c++ templates namespaces c++11

3
推荐指数
2
解决办法
243
查看次数