我想知道如何编写CMake设置,该设置允许使用任何编译器和操作系统编译x86和x64体系结构。CMake多体系结构编译
回答
如果CMake开箱即用32/64位选项,那将会很棒。它不会,所以你将需要应用不同的编译器或生成器依赖方法之一。例如:
GCC(在Linux上)和一些其他编译器,例如, Sun Studio。将
CFLAGS
和CXXFLAGS
设置为包含-m32
(32位版本)或-m64
(64位版本)。Windows,Visual Studio生成器。使用64位发生器,例如
cmake -G "Visual Studio 10 Win64" path\to\source\dir
编译64位(x64)。在发生器名称中省略“Win64”,以构建32位
Mac OS X.使用
CMAKE_OSX_ARCHITECTURES
CMake变量。cmake -DCMAKE_OSX_ARCHITECTURES=i386 /path/to/source/dir
将编译32位建立cmake -DCMAKE_OSX_ARCHITECTURES=x86_64 /path/to/source/dir
将编译64位。cmake "-DCMAKE_OSX_ARCHITECTURES=x86_64;i386" /path/to/source/dir
将创造96位通用二进制代码:)
上面稍微改写。
http://dev.mysql.com/doc/internals/en/compiling-for-different-hardware-achitectures.html
这太棒了!但对于Visual Studio来说,它不应该是-G,因为它是一个生成器?此外,对于Visual Studio,是否可以在CMakeLists.txt文件中设置某种标志以自动告诉它使用哪个标志(即请求您选择i386还是x86-64,并根据您的响应进行设置)? – OniLink 2011-03-19 04:45:27
它应该是-G,并且生成器必须通过命令行传入。您也可以使用cmake-gui,一个基于Qt的图形界面,并从下拉列表中选择合适的生成器。 – 2011-03-19 14:10:50
@OniLink,@Marcus。是的,它应该是-G。非常感谢您的注意!我现在修复了它(并修复了MySQL Wiki中的相同段落)。据我所知,改变了CMakeLists中Visual Studio的位置。txt是不可能的,这里的位是生成器的属性,并且生成器不能动态设置/更改。 – 2011-03-19 21:02:33
有一个CMake tutorial可在网上查阅基本知识,这是从CMake书中采取的。 CMake哲学是使用多个构建目录,并使用单一源代码树。因此,您可以在Windows上使用Visual Studio,并使用32位编译器创建构建目录,使用64位编译器创建构建目录。尽管CMake的目标是大量的编译器和操作系统,但是你没有提到你使用的是什么语言,你正在考虑哪种操作系统/编译器/体系结构,以及你是否使用了任何工具包/库。
答案与问题无关。 – Yola 2018-02-05 09:15:37
如果CMAKE_OSX_ARCHITECTURES = I386给你的错误 “无法识别的选项-arch” 重新开始,而是尝试:
cmake -DCMAKE_SYSTEM_NAME=Darwin -DCMAKE_SYSTEM_PROCESSOR=i386 -DCMAKE_SYSTEM_VERSION=10
- 1. 没有体系结构编译iphone sdk
- 2. 为ARM体系结构编译libcivil
- 3. 任意体系结构的可编译目标编译器
- 4. 为iPhone 6编译错误(没有体系结构编译)
- 5. 库编译为体系结构x64,具有ARM架构错误
- 6. gfortran编译错误:体系结构x86_64的未定义符号
- 7. 为Windows和Mac编译OpenAES for 64位体系结构
- 8. 在x86_64体系结构中编译为32位模式
- 9. 以.NET编译器为目标的ARM体系结构
- 10. Caffe编译失败:体系结构x86_64的未定义符号?
- 11. NVIDIA CUDA SDK示例编译不支持的体系结构'compute_20'
- 12. 编译具有特定体系结构的C程序
- 13. 升级到xcode 4错误没有体系结构编译为
- 14. 如何确定我在GCC中编译的体系结构?
- 15. 体系结构x86_64的未定义符号 - 编译继承类
- 16. INSTALL_FAILED_NO_MATCHING_ABIS即使编译为所有支持的体系结构
- 17. Tiger编译器的目标体系结构
- 18. 是否有可能在linux上为许多体系结构编译c?
- 19. ASP .NET MVC体系结构适合传统的多层体系结构
- 20. 在CMake文件中检测x86体系结构
- 21. MVC体系结构
- 22. Elasticsearch体系结构
- 23. Graphql体系结构
- 24. Firebug体系结构
- 25. Rails体系结构?
- 26. 编译C结构
- 27. 结构不编译?
- 28. 多服务器更新体系结构
- 29. 多头和不同的体系结构
- 30. 多种体系结构,winusb和wix
可能相关:http://stackoverflow.com/questions/5280168/使交叉平台库与Cmake – 2011-03-17 09:27:38