我在程序中有一些设置,这些设置依赖于我的编译目标的位宽。如果位宽为32位,则由于内存限制,必须定义一些特殊的宏。
我找不到任何方法在qmake中检测目标的位宽,而在cmake中可以使用
是否有类似于qmake的功能?
我找不到任何方法在qmake中检测目标的位宽,而在cmake中可以使用
CMAKE_SIZEOF_VOID_P
选项实现,其中8表示64位,4表示32位。是否有类似于qmake的功能?
编辑: 根据评论请求的问题背景
第一部分: 我在我的C++11程序中使用了一个需要在32位系统上以不同方式运行的宏的C库。
第二部分: 在32位系统中,内存被限制为4GB的虚拟内存。即使您运行的是64位系统和机器,并且即使您有500GB的交换内存,32位程序也不能使用超过4GB的内存。这就是为什么我正在使用的库对于32位有特殊设置以限制其使用的内存量。因此,我需要知道是否为32位目标编译(例如Raspberry Pi),以激活所需的宏。
第三部分: 该库在构建我的软件之前作为qmake中的自定义目标构建。一旦库被构建,我的软件将被构建并链接到该库。
if
或if constexpr
或带有默认参数<bool x_32_bit = (4 == sizeof(void *))>
的模板即可。 - user7860670contains(QMAKE_TARGET.arch, x86_64)
这个 qmake 语句可以给你正确的答案? - vahancho