如果您对升级Swift编译器感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于升级Swift编译器的详细内容,我们还将为您解答swift的编译器的相关问题,并且为您提供关于##
如果您对升级 Swift 编译器感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于升级 Swift 编译器的详细内容,我们还将为您解答swift的编译器的相关问题,并且为您提供关于###g++ 编译器、.NET 基金会及 Roslyn 编译器、Android D8,下一代 dex 编译器、C++ 生态:编译器、IDE、测试工具大全的有价值信息。
本文目录一览:升级 Swift 编译器(swift的编译器)
如何解决升级 Swift 编译器
我已经安装了最新版本的 Xcode (12.4)。由于我正在处理的这个项目的设置方式,我需要使用命令行工具构建一些依赖项。该工具抱怨
Incompatible Swift version - framework was built with 5.3.2 (swiftlang-1200.0.45 clang-1200.0.32.28) and the local version is 5.3.1 (swiftlang-1200.0.41 clang-1200.0.32.8).
我去了 swift site,下载并安装了 5.3.3。当我运行 swiftc -version
时,它仍然声称我正在运行 5.3.1。我试过重新启动我的机器以防万一这是问题,但它仍然声称我使用的是旧编译器。我错过了什么?
解决方法
我建议使用 swiftenv 实用程序来简单管理 Swift 版本。它可以管理全局和每个项目的 Swift 版本
###g++ 编译器
###g++ 编译器
#@author: gr
#@date: 2014-07-20
#@email: forgerui@gmail.com
对 g++ 编译器不是特别熟悉,希望借此熟悉一下. 点击查看 Evernote 原文。
Contents
-
要使用 strlen 需要加入
#include <cstring>
. -
g++ 编译器中的嵌套模板之间需要放一个空格。如下:
//o_O awesome!! <List<char> >中间应该有个空格 List<char> l1 = make<List<char>>("hello"); //~_~ correct List<char> l2 = make<List<char> >("hello"); Template <typename Container> Container make(const char* s){ return Container(s, s+strlen(s)); }
3. 使用迭代器时,定义的时候需要加上typename;
```cpp
//前面需要加上typename
for (typename List<char>::iterator it = l2.begin(); it != i2.end(); ++it);
-
在
visual studio
中,shared_ptr
通过#include <memory>
便可以使用,使用的时候可以使用std::shared_ptr
或者std::tr1::shared_ptr
.
在g++
中,需要#include <tr1/memory>
, 并且使用的时候,必须使用std::tr1::shared_ptr
. -
gcc -Wall
生成所有警告信息。 -
gcc -M
生成文件关联的信息。包含目标文件所依赖的所有源代码你可以用 gcc -M hello.c 来测试一下,很简单。 -
gcc -MM
和上面的那个一样,但是它将忽略由 #include<file> 造成的依赖关系。 -
依赖问题: kalman.o:在函数‘main’中:kalman.cpp:(.text+0x18b):对‘cv::KalmanFilter::KalmanFilter (int, int, int, int)’未定义的引用 编译时可以使用
g++ -c kalmane.cpp
pkg-config --cflags opencv同样链接时可以使用 g++ -o kal kalman.cpp
pkg-config --libs opencv`
.NET 基金会及 Roslyn 编译器
Microsoft 在
.NET 基金会
为什么宣布开源要成立基金会?我们可以先看看其它开源项目、社区的作法,首先,很多人熟悉的泛
于是
.NET 基金会持续增加管理的开源项目
.NET 编译器平台
同样在
编译器最重要的工作之一,就是将开发者写的程序代码转换成执行平台的代码(
除了转换程序代码之外,
在
在
通过
本文分享自微信公众号 - dotNET跨平台(opendotnet)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
Android D8,下一代 dex 编译器
Google 在刚刚发布的 Android Studio 3.1 新版本中,将 D8 作为新版本开发工具默认的 Dex 编译器。那么什么是 D8 呢,D8 与之前的 Dex 打包器有何区别呢?
大家知道,安卓项目在打包生成 Apk 安装文件的过程中,最重要的一步便是将我们所写的 java 代码编译过成 .class 字节文件再打包转化成一个或多个 .dex 格式的代码压缩文件。这种 dex 文件便是 Android 虚拟机所能识别、解析并运行的程序。
Google 一直在致力于提升 Dex 文件的编译和运行优化工作,并开发出称之为下一代 dex 编译器:D8。其实早在 AS 3.0 Beta 版本中,Google 已经引入 D8 的测试使用。直到当前 3.1 新版本的发布,才正式将其作为默认 Dex 编译器。
根据官方介绍,新版 D8 Dex 编译器相比之前称之为 DX 的旧版编译器,在 dex 文件的编译和使用上,至少具备这么三个优势:
1,更快的编译速度;
2,更小的文件大小;
3,更优的运行性能。
下面是来自来Google 的官方测试数据,分别使用Dex 和D8来猜测是编译速度和文件大小。
如果你使用的 Android Studio 还是 3.0 版本,可以在项目的 gradle.properties 文件手动开启 D8 编译器。相关的配置如下:
android.enableD8=true
不止于此,Google 在代码压缩和优化上也在不断寻求进步。目前我们广泛使用的 ProGuard 工具也将有新的替代者:R8。不过,R8 R8 还没有正式被融入使用,其所在的开源地址为:https://r8.googlesource.com/r8。
本文同步分享在 博客“xiangzhihong8”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
C++ 生态:编译器、IDE、测试工具大全
编写专业的 C++ 应用程序,您不仅需要基本的文本编辑器和编译器。您还需要更多工具。在这篇文章中,我们将介绍大量 C++ 编程工具,包括:编译器,IDE,调试器等。
介绍
C++ 计算机编程语言已经成为使用最广泛的现代编程语言之一。使用 C++ 构建的软件以其性能和效率而闻名。C++ 已用于构建众多广受欢迎的核心库、以及类似 Microsoft Office 之类的应用程序,Unreal 之类的游戏引擎,Adobe Photoshop 之类的软件工具,Clang 之类的编译器,MySQL 之类的数据库,甚至包括 Windows 之类的操作系统。平台不断发展和壮大。
现代 C++ 被定义为利用基于 C++11,C++14 和 C++17 语言特性的 C++ 代码。这些按年份命名的语言标准(分别是 2011 年,2014 年和 2017 年),包括对核心语言的许多重要新特性和增强,以实现功能强大,高性能和无错误的代码。现代 C++ 具有支持面向对象编程,函数编程,泛型编程和低级内存操作功能的高级功能。
包括微软、因特尔和自由软件基金会等,都有其自己的 C++ 编译器。诸如 Microsoft,QT Company,JetBrains 和 Embarcadero 之类的公司提供了用于编写 C++ 代码的集成开发环境。适用于 C++ 的流行库可用于广泛的计算机学科,包括人工智能、机器学习、机器人、数学、科学计算、音频处理和图像处理等等。
在这篇文章中,我们将介绍许多编译器,构建工具,IDE,库,框架,编码助手,以及更多可以支持和增强现代 C++ 开发的内容。
开始吧!
编译器,构建工具和程序包管理器
有许多支持现代 C++ 的流行编译器,包括 GCC/g ++,MSVC(Microsoft Visual C ++)和 Clang。每个编译器对操作系统的支持都不同,GCC/g ++ 始于 1980 年代后期,Microsoft 的 Visual C ++ 于 1990 年代初,而 Clang 则在 2000 年代后期。这三个编译器都支持现代 C++,至少支持 C++ 17,但是它们各自的源代码许可差异很大。
GCC
GCC 是 GCC 指导委员会开发、维护和定期更新的通用编译器,率属于 GNU 项目。GCC 描述了许多针对硬件平台和多种语言的庞大编译器家族。虽然它主要针对类 Unix 平台,但 Windows 可以通过 Cygwin 或 MinGW 运行时库提供支持。GCC 支持编译最新的 C++ 代码,直至 C++17,并提供了对某些 C++20 功能的实验性支持。它还可以编译基于 C++ 标准的各种语言扩展。GCC 使用 GPLv3 许可进行开源,带有 GCC 运行时库例外。GCC 得到了 CMake 和 Ninja 等构建工具的支持,以及 CLion,Qt Creator 和 Visual Studio Code 等许多 IDE 的支持。
https://gcc.gnu.org/
https://gcc.gnu.org/projects/cxx-status.html
Microsoft Visual C ++
Microsoft Visual C ++(MSVC)是微软公司的编译器,用于实现自定义 C++ 标准(称为 Visual C ++)。它会定期更新,并且像 GCC 和 Clang 一样,支持最新 C ++17 的现代 C++ 标准,并提供对某些 C++20 功能的实验性支持。MSVC 是在 Microsoft 自己的 Visual Studio 中构建 C++ 应用程序的主要方法。它通常针对 Windows,Android,iOS 和 Linux 上的许多体系结构。对构建工具和 IDE 的支持是有限的,但仍在增长。CMake 扩展在 Visual Studio 2019 中可用。MSVC 可以与 Visual Studio Code 一起使用,CLion 和 Qt Creator 的有限支持以及其他扩展。MSVC 是微软专有的项目,可以通过商业许可获得,同时也提供社区版。
https://zh.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B
https://devblogs.microsoft.com/visualstudio/
https://visualstudio.microsoft.com/vs/community/
Clang
Clang 描述了为 LLVM 项目维护和定期开发的 C 语言族的大量编译器。尽管它针对许多流行的体系结构,但是与 GCC 相比,它支持的平台较少。LLVM 项目通过关键设计原则定义了 Clang —— 严格遵守 C++ 标准(尽管提供了对 GCC 扩展的支持),模块化设计以及在编译过程中对源代码的结构进行的最小修改等。像 GCC 一样,Clang 编译具有支持 C++17 标准和实验性 C++20 的现代 C++ 代码。它可以在开源(Apache 许可证版本 2.0)许可下使用。Clang 还获得了诸如 CMake 和 Ninja 之类的构建工具以及诸如 CLion,Qt Creator,Xcode 之类的 IDE 之类的广泛支持。
https://clang.llvm.org/
https://clang.llvm.org/cxx_status.html
Make
Make 是广泛使用的知名构建系统,尤其是在 Unix 和类似 Unix 的操作系统中。Make 通常用于从源代码构建可执行程序和库。但是该工具适用于涉及执行任意命令以将源文件转换为目标结果的任何过程。Make 与任何特定的编程语言都不紧密。它会自动确定已更改了哪些源文件,然后执行最少的构建过程以获取最终输出。它还用于将编译结果安装到系统
https://www.gnu.org/software/make/
CMake
CMake 是用于管理构建过程的跨平台工具。尤其是大型应用程序和依赖库的构建,可能是一个非常复杂的过程,尤其是当您支持多个编译器时。CMake 对此进行了抽象。您可以使用一种通用语言定义复杂的构建过程,并将其转换为适用于各种被支持的编译器、IDE 和构建工具的本机构建指令,包括 Ninja(如下所示)。有适用于 Windows,macOS 和 Linux 的 CMake 版本。
https://cmake.org/
Ninja
Ninja 构建系统用于构建应用程序的实际过程,类似于 Make(一个传统的但现在使用较少的实用程序)。它着重于通过并行化构建来尽可能快地运行。它通常与 CMake 配对使用,后者支持为 Ninja 构建系统创建构建文件。Ninja 的功能集故意保持最小,因为重点在于速度。
https://ninja-build.org/
Microsoft Build Engine(MSBuild)
MSBuild 是基于命令行的内置平台,可从 Microsoft 获得开源(MIT)许可。它可用于自动化编译和部署项目的过程。也可以独立使用或者与 Visual Studio 打包在一起,也可以从 Github 中获得。MSBuild 文件的结构和功能与 Make 非常相似。MSBuild 具有基于 XML 的文件格式,主要支持 Windows,但也支持 macOS 和 Linux。诸如 CLion 和 C ++ Builder 之类的 IDE 也可以与 MSBuild 集成。
https://docs.microsoft.com/zh-cn/visualstudio/msbuild/msbuild
Conan,Vcpkg,Buckaroo
诸如 Conan,vcpkg 和 Buckaroo 之类的程序包管理器已在 C++ 社区中变得越来越流行。程序包管理器是用于安装库或组件的工具。
Conan 是一个分散式开源(MIT)软件包管理器,它支持多个平台和所有构建系统(例如 CMake 和 MSBuild)。Conan 支持二进制文件,其目标是自动化依赖性管理,以节省开发和持续集成的时间。
微软的 vcpkg 是 MIT 许可下的开源软件,支持 Windows,macOS 和 Linux(甚至支持与 CMake 集成)。Vcpkr 需要在 Visual Studio 2015 或更高版本中使用,因此其使用范围有所限制。
Buckaroo 是一个鲜为人知的开源软件包管理器,可以从 GitHub,BitBucket,GitLab 等获取依赖项。Buckaroo 为许多 IDE 提供了集成,包括 CLion,Visual Studio Code,XCode 等。
以下是上述软件包管理器的链接:
- https://conan.io/
- https://github.com/microsoft/vcpkg
- https://buckaroo.pm/
Compiler Explorer & Online Tools
Compiler Explorer 是一个基于 Web 的工具,您可以从多种 C++ 编译器和同一编译器的不同版本中进行选择,用于测试代码。这使开发人员可以在编译器之间比较为特定 C++ 构造生成的代码,并测试正确的行为。不仅有 Clang,GCC 和 MSVC,还有鲜为人知的编译器,例如 DJGPP,ELLCC,Intel C ++ 等。
https://godbolt.org/
您还可以使用的便捷在线编译器的列表:例如 Coliru,Wandbox,CppInsighs 等:https://arnemertz.github.io/online-compilers/
集成开发环境
大量的编辑器和集成开发环境(IDE)可用于现代 C++ 开发。文本编辑器虽然很轻量级,但功能不如完整的 IDE,因此仅用于编写代码的过程,而不用于调试或测试。全面开发需要其他工具,而 IDE 包含这些工具并集成到一个紧密集成的集成开发环境中。可以使用许多文本编辑器(例如 Sublime Text,Atom,Visual Studio Code,vi/vim 和 Emacs)编写 C++ 代码。但是,有些 IDE 是专门为现代 C++ 而设计的,例如 CLion,Qt Creator 和 C ++ Builder,而 Xcode 和 Visual Studio 等 IDE 也支持其他语言。
Sublime Text,Atom 和 Visual Studio Code
- Sublime Text 是一个商业文本编辑器,可通过插件扩展对现代 C++ 的支持。
- Atom 是一个开放源代码(MIT 许可)文本编辑器,它通过带有可用于调试和编译的集成的软件包来支持现代 C++。
- Visual Studio Code 是 Microsoft 提供的流行的开源(MIT 许可)源代码编辑器。
提供了许多扩展,这些扩展将诸如调试和现代 C++ 的自动代码完成等功能引入 Visual Studio Code。Sublime Text,Atom 和 Visual Studio Code 中,这些工具均可用于 Windows,macOS 和 Linux。
以下是上述工具的链接:
- https://www.sublimetext.com/
- https://atom.io/
- https://code.visualstudio.com/
Vi/Vim 和 Emacs
Vi/Vim 和 Emacs 是基于命令行的免费文本编辑器,主要在 Linux 上使用,但也可用于 macOS 和 Windows。可以通过使用脚本将现代 C++ 支持添加到 Vi/Vim,Emacs 可以通过使用模块来支持现代 C++。
https://www.vim.org/
https://www.gnu.org/software/emacs/
CLion
CLion 是 JetBrains 的商业 IDE,支持现代 C++。它可以与 CMake 和 Gradle 等构建工具一起使用,与 GDB 和 LLDB 调试器集成,可以与版本控制系统(例如 Git),测试库(例如 Boost.Test)和各种文档工具一起使用。它具有代码生成,重构,动态代码分析,符号导航等功能。
https://www.jetbrains.com/clion/
Qt Creator
Qt Creator 是 Qt Company 提供的免费开源 IDE,支持 Windows,macOS 和 Linux。Qt Creator 具有 UI 设计器、语法高亮显示、自动代码完成以及与许多不同的现代 C++ 编译器(例如 GCC 和 CLang)集成的功能。Qt Creator 与 Qt 库紧密集成,可快速构建跨平台应用程序。此外,它与标准版本控制系统(如 Git),调试器(如 GDB 和 LLDB),构建系统(如 CMake)集成,并且可以将跨平台部署到 iOS 和 Android 设备。
https://www.qt.io/
C ++ Builder
C ++ Builder 是 Embarcadero Technologies 的商业 IDE,可在 Windows 上运行。C++ Builder 屡获殊荣,主要用于 Windows 开发的 Visual Component Library(VCL)和用于 Windows,iOS 和 Android 的跨平台开发的 FireMonkey(FMX)。C ++ Builder 编译器具有 Clang 的增强版本,集成的调试器,可视 UI 设计器,数据库库,全面的 RTL,以及诸如语法突出显示,代码完成和重构的标准功能。C ++ Builder 具有 CMake 的集成,可以与 Ninja 以及 MSBuild 一起使用。
https://www.embarcadero.com/products/cbuilder
https://www.embarcadero.com/products/cbuilder/starter
Visual C++
Visual C++ 是 Microsoft 的商业 Visual Studio IDE。Visual Studio 在 IDE 中集成了构建,调试和测试。它提供了 Microsoft 基础类(MFC)库,该库封装了对 Win32 API 的访问。Visual Studio 具有用于某些平台的可视 UI 设计器,附带 MSBuild,支持 CMake 并提供标准功能,例如代码自动完成,重构和语法高亮显示。此外,Visual Studio 支持多种其他编程语言,其 C++ 方面侧重于 Windows,并逐渐添加了对其他平台的支持。
https://visualstudio.microsoft.com/
Xcode
Xcode 是 Apple 提供的多语言 IDE,仅在支持现代 C++ 的 macOS 上可用。Xcode 是专有软件,但可从 Apple 免费获得。Xcode 具有集成的调试器,支持 Git 等版本控制系统,具有 Clang 编译器,并使用 libc++ 作为其标准库。支持标准功能包括语法高亮显示,代码自动完成和重构。此外,Xcode 支持诸如 CMake 的外部构建系统,并利用 LLDB 调试器。
https://developer.apple.com/xcode/
调试与测试
GDB
GDB 是基于便携式命令行的调试平台,支持现代 C++,可在开放源代码许可(GPL)下使用。许多编辑器和 IDE(例如 Visual Studio,Qt Creator 和 CLion)都支持与 GDB 集成。它也可以用于远程调试应用程序,其中 GDB 在一个设备上运行,而被调试的应用程序在另一设备上运行。它支持许多平台,包括 Windows,macOS 和 Linux。
https://www.gnu.org/software/gdb/
LLDB
LLDB 是一个开源调试接口,支持现代 C++ 并与 Clang 编译器集成。它具有许多可选的性能增强功能,例如 JIT,但还支持调试内存,多个线程和机器代码分析。它是用 C++ 构建的。LLDB 是 Xcode 的默认调试器,可与 Visual Studio Code,CLion 和 Qt Creator 一起使用。它支持许多平台,包括 Windows,macOS 和 Linux。
https://lldb.llvm.org/
CATCH / CATCH2
Catch2 是用于现代 C ++ 的跨平台开源(BSL-1.0)测试框架。Catch2 非常轻巧,因为仅需要包含头文件。单元测试可以标记并成组运行。它支持测试驱动的开发和行为驱动的开发。Catch2 还可以轻松与 CLion 集成。
https://github.com/catchorg/Catch2
Boost.Test
Boost.Test 是使用现代 C++ 标准的功能丰富的开源(BSL-1.0)测试框架。它可用于通过可自定义的日志记录和实时监视来快速检测错误,故障和超时。可以将测试分组到套件中,并且该框架支持小规模测试和大规模测试。
https://github.com/boostorg/test
Google Test
Google Test 是 Google 的 C ++ 测试和模拟框架,可以通过开源(BSD)许可获得。Google 测试可以在多种平台上使用,包括 Linux,macOS,Windows 等。它包含一个单元测试框架、断言、死锁测试、检测故障、处理参数化测试以及创建 XML 测试报告。
https://github.com/google/googletest
CUTE
CUTE 是集成在 Cevelop 中的单元测试框架,但也可以独立使用。它涵盖从 C++98 到 C++2a 的 C++ 版本,并且通过头文件即可使用。虽然不如 Google Test 流行,但它的宏纠结较少,并且仅在没有适当的 C++ 功能可用的情况下使用宏。另外,通过回避某些 I/O 格式化功能,它具有一种可轻松在嵌入式平台上运行的模式。
https://cute-test.com/
Clang Sanitizers
- AddressSanitizer- https://clang.llvm.org/docs/AddressSanitizer.html
- UndefinedBehaviorSanitizer- https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html
- LeakSanitizer- https://clang.llvm.org/docs/LeakSanitizer.html
Clang Sanitizers 是为您的应用程序添加额外工具的工具(例如,它们替换了 new/malloc/delete 调用),并且可以检测各种运行时错误:内存泄漏、指针删除后使用、双重释放等。为了改善您的构建流程,许多指南都建议在进行测试时增加消毒步骤。
总结
我希望上面的清单对 C++ 开发必不可少的工具有一个整体的概述。
如果您想了解有关其他生态系统要素的更多信息:库,框架和其他工具,请参阅 Embarcadero 的完整报告:
C ++ 生态系统白皮书(这是一个非常漂亮的 pdf,内容超过 20 页!)
您可以在此参考资料中找到增强 C++ 开发的工具,库和框架的超长列表:https://github.com/fffaraz/awesome-cpp
轮到你了
你在编写 C++ 应用程序时最喜欢使用哪些工具?
关于升级 Swift 编译器和swift的编译器的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于###g++ 编译器、.NET 基金会及 Roslyn 编译器、Android D8,下一代 dex 编译器、C++ 生态:编译器、IDE、测试工具大全的相关信息,请在本站寻找。
本文标签: