- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们的 CmakeFileList.txt file
中有些东西是横向的.它试图在 ARM 平台上构建一个 IA32 组件。我正在努力解决这个问题。
有问题的文件已从 GLOB 中过滤掉,名为 rdrand.cpp
:
list(REMOVE_ITEM cryptopp_SOURCES
...
${CMAKE_CURRENT_SOURCE_DIR}/rdrand.cpp
...
${cryptopp_SOURCES_TEST}
)
set(cryptopp_SOURCES
rdrand,cpp
回到 IA32 平台。根据
Building c++ project on Windows with CMake, Clang and Ninja (不太合适,但它有有用的信息)和
CMakePlatformId.h.in ,看起来我需要一个使用
ARCHITECTURE_ID
的谓词和
"X86"
,
"X32"
,
"X64"
或
"x64"
(不是重复,x 是小写而不是大写)。
# http://github.com/weidai11/cryptopp/issues/419
if (${ARCHITECTURE_ID} == "X86" OR ${ARCHITECTURE_ID} == "X32" OR ${ARCHITECTURE_ID} == "X64" )
list(APPEND cryptopp_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/rdrand.cpp)
endif()
==
,
=
,
STREQUAL
似乎工作:
CMake Error at CMakeLists.txt:310 (if):
if given arguments:
"==" "X86" "OR" "==" "X32" "OR" "==" "X64"
Unknown arguments specified
$ cmake .
CMake Error at CMakeLists.txt:310 (if):
if given arguments:
"STREQUAL" "X86" "OR" "STREQUAL" "X32" "OR" "STREQUAL" "X64"
Unknown arguments specified
ARCHITECTURE_ID
几乎没用。我
can't find an example或
the docs on Cmake's site .在
"${ARCHITECTURE_ID}"
周围添加引号没有帮助;也没有删除大括号来表示变量
ARCHITECTURE_ID
.
CMAKE_SYSTEM_PROCESSOR
和其他相关定义,但 Cmake 主要为它们返回“未知”。至少可以说它不是很有帮助。
ARCHITECTURE_ID
识别IA32平台?或者,在这种情况下我还应该使用其他什么东西吗?
GNUmakefile
中所做的. Make 不是一个构建系统,所以我们必须做一些繁重的工作:
IS_X86 := $(shell uname -m | $(EGREP) -v "x86_64" | $(EGREP) -i -c "i.86|x86|i86")
IS_X64 := $(shell uname -m | $(EGREP) -i -c "(_64|d64)")
...
# Need RDRAND for X86/X64/X32
ifeq ($(IS_X86)$(IS_X32)$(IS_X64),000)
SRCS := $(filter-out rdrand.cpp, $(SRCS))
endif
最佳答案
ARCHITECTURE_ID
的变量确实存在于 CMake 中进行查询。这可能就是您在 CMake 的文档中找不到任何提示的原因。仅用于 CMakePlatformId.h
填写 MSVC
特定的内部变量,如 MSVC_CXX_ARCHITECTURE_ID
./* For windows compilers MSVC and Intel we can determine
the architecture of the compiler being used. This is because
the compilers do not have flags that can change the architecture,
but rather depend on which compiler is being used
*/
cmake_host_system_information()
命令。问题在于,它并没有导出它实际拥有的所有信息。我认为这是一个缺失的功能,可能会在接下来的几天内向 CMake 的源 Git 发出拉取请求以扩展其功能,但这在不久的将来对您没有帮助。 $ cmsysTestscxx testSystemInformation
GNUMakefile
示例中的一个缺陷)。 if
的问题声明,这可以简单地通过 Regular Expression 解决:cmake_minimum_required(VERSION 2.4)
project(TestArchitectureId)
if (ARCHITECTURE_ID MATCHES "^(X86|X32|X64|x64)$" )
message(STATUS "Hello ${CMAKE_MATCH_1}")
endif()
if(NOT CMAKE_SYSTEM_PROCESSOR STREQUAL "ia64")
if(NOT CMAKE_GENERATOR MATCHES "IA64")
try_compile()
与
rdrand.cpp
:
# Choose a configuration for our compiler tests
if (NOT CMAKE_CONFIGURATION_TYPES AND
NOT CMAKE_NO_BUILD_TYPE)
set(CMAKE_TRY_COMPILE_CONFIGURATION "${CMAKE_BUILD_TYPE}")
else()
set(CMAKE_TRY_COMPILE_CONFIGURATION RelWithDebInfo)
endif()
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
string(TOUPPER "${CMAKE_TRY_COMPILE_CONFIGURATION}" cryptopp_TRY_COMPILE_CONFIGURATION)
set(CMAKE_REQUIRED_FLAGS "${CMAKE_CXX_FLAGS}" "${CMAKE_CXX_FLAGS_${cryptopp_TRY_COMPILE_CONFIGURATION}}")
get_directory_property(CMAKE_REQUIRED_INCLUDES INCLUDE_DIRECTORIES)
get_directory_property(CMAKE_REQUIRED_DEFINITIONS COMPILE_DEFINITIONS)
if (CMAKE_REQUIRED_DEFINITIONS)
string(REPLACE ";" ";-D" CMAKE_REQUIRED_DEFINITIONS "-D${CMAKE_REQUIRED_DEFINITIONS}")
endif()
try_compile(
cryptopp_RDRAND_WORKS
${CMAKE_CURRENT_BINARY_DIR}
SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/rdrand.cpp
CMAKE_FLAGS
-DCOMPILE_DEFINITIONS:STRING=${CMAKE_REQUIRED_FLAGS}
-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}
COMPILE_DEFINITIONS
${CMAKE_REQUIRED_DEFINITIONS}
)
关于cmake - 如何确定 ARM、MIPS 和 IA32 等平台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43923444/
这个问题已经有答案了: With arrays, why is it the case that a[5] == 5[a]? (20 个回答) 已关闭 8 年前。 #include int main
我正在使用 CLion 1.05, int main() { int ia[] = {0, 1, 2, 3, 4}; auto ia2(ia); auto ia3(&ia[0]
我无法访问我的 original account .如果可能,请版主合并帐户。 这是我的问题。以下 C 程序存在 IA-64 段错误,但在 IA-32 上运行良好。 int main() {
我有一个接口(interface) IA 和实现它们的类 B 和 C。B 和 C 都实现了 Parcelable也是。 然后我有棘手的部分: D 类有 ArrayList .我也需要在 arrayli
亚马逊于 2018 年 4 月宣布推出一种名为 One-Zone Infrequent Access 的新存储类,它通过仅使用一个可用区进行存储来降低成本,从而补充了普通 IA 选项。 它的 site
我想知道英特尔IA-32架构的基本数据类型是什么。 我知道其中四个-字节(8位),单词(16位),双字(32位)和quadwords(64位)。还有其他人吗? 最佳答案 是的,您又错过了一个-> do
在《英特尔64和IA-32体系结构手册》第3A卷第9章“处理器管理和初始化”中,我发现了以下内容: Compatibility mode execution is selected on a code
段选择器什么时候出现。英特尔指南中的一行说: "Each segment descriptor has an associated segment selector. A segment select
我能够在硬件模式下使用运行 SGX 并从 IAS 成功检索 SigRL。但当我尝试使用他们的 REST API 执行报价证明时,我遇到了困难。我使用的REST API接口(interface)说明he
谁能解释为什么这段代码有效,即使我只为 st 数组中的 2 个单元格分配内存? int main(void){ st=(int *)malloc(sizeof(int)*2); int j; for(
我正在尝试使用 IA 32 的汇编代码读取命令行参数。我在这里找到了如何执行此操作的解释 http://www.paladingrp.com/ia32.shtml .我可以使用堆栈指针来获取参数的数量
我在IA-32中搜索寻址模式,但没有看到任何网站或文章对寻址模式进行了简单的解释。我需要一篇文章或其他东西,通过内存变化过程中的一些图片简单地解释这件事,并通过图片指定地址模式。 我知道在 IA-32
我正在查看进程的 Linux IA-32 内存模型,我有一个简单的问题。图片中的灰色区域包含什么?它们是否仅用于显示内存的开始和结束?那么,文本是否从 0x0 开始,堆栈从 0xFFFFFFFF 开始
我正在研究英特尔的 IA-32 软件开发人员手册。特别是,我正在阅读以下手册:http://www.intel.com/Assets/PDF/manual/253666.pdf .让我们以 ADD 指
我一直在尝试让 jquery-ias 插件与我的网站一起使用,但是当我在页面底部添加页脚时似乎出现问题。只要不包含页脚,该插件就可以完美运行并按预期加载页面。但是,当我包含页脚时,它会停止滚动并显示“
由于这方面的网络资源很少,为了将来的搜索,我将首先列出 IA-32 汇编语言 (NASM) 的地址模式,然后提出一个简单的问题。 寄存器寻址 mov eax, ebx:将 ebx 中的内容复制到 ea
这几天我一直在为这个问题苦苦挣扎。我正在尝试在容器外部测试 DAO,但在运行测试用例时出现错误: Error creating bean with name 'SqlMapClient' define
我能找到的所有东西都告诉我我应该对齐,因为它可以更有效率,但我找不到我应该在 IA-32 上这样做的硬件问题。这是因为地址总线需要被 4 整除的地址吗?或者因为 RAM 只能提供对齐的数据而不会损失性
我将我的网站设置如下: Visualizati
我在将以下 java 代码转换为 Intel IA-32 程序集时遇到了一些困难: class Person() { char name [8]; int age; void pr
我是一名优秀的程序员,十分优秀!