我使用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) 我正在尝试测量使用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)
我在我的代码中做了一些基准测试,我想弄清楚我是否应该使用标准版的chrono或Boost提供的原始版本.
我开始使用标准的,因为我想尝试一下,并注意到例如它不提供像Boost提供的计时器之类的io功能.
那么,关于计时和一般情况下,我应该使用Boost库还是它们的标准库对应物?
我正在写一个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) 我有一个POM文件,我想安装构建项目所需的所有插件/ jar,而无需构建项目,因此当我运行“ maven软件包”时,不需要Internet连接。
有什么办法吗?
我想知道是否有可能做到以下几点:
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++ ×4
boost ×2
arm ×1
c++-chrono ×1
c++11 ×1
cmake ×1
compilation ×1
interface ×1
ios ×1
java ×1
maven ×1
namespaces ×1
performance ×1
pom.xml ×1
qml ×1
qt ×1
stl ×1
templates ×1
variant ×1
virtual ×1