<p>Gcovr独立于GCC版本,但GCC 8对覆盖范围格式做了轻微更改。这些更改首先在gcovr 4.0中实现,但在gcovr 4.2中添加了进一步的改进。如果在路径中使用的编译器不是名为<code>gcc</code>或<code>g++</code>的编译器,则应告知gcovr需要使用哪个gcov版本(例如<code>gcovr gcov-executable gcov-7 ...</code>)</p>
<p>本例中的问题是<code>python</code>和<code>pip</code>通常指的是Python 2.7版本,而不是Python 3版本。Python3.x的变体有<code>python3</code>和<code>pip3</code>两种。因此,正确的调用应该是:</p>
<pre class="lang-sh prettyprint-override"><code>$ sudo pip3 install gcovr
</code></pre>
<p>(如果安装到您的主目录中,也可以不使用sudo。)</p>
<p>如果要为特定python安装gcovr,可以像<code>python -m pip ...</code>一样调用pip:</p>
<pre class="lang-sh prettyprint-override"><code>$ sudo /path/to/your/python3 -m pip install gcovr
</code></pre>
<p>如果要升级现有已安装的Python包,必须明确告知pip:</p>
<pre class="lang-sh prettyprint-override"><code>$ pip install -U gcovr
</code></pre>
<p><strong>但是,您不能使用pip更新通过apt安装的软件包。相反,请先删除apt软件包,例如使用<code>sudo apt-get remove gcovr</code></p>
<p>要安装特定的gcovr版本,请使用类似<code>gcovr == 4.2</code>的需求规范(但请记住使用引号):</p>
<pre class="lang-sh prettyprint-override"><code>$ pip3 install 'gcovr == 4.2'
</code></pre>
<p>除非您的本地网络环境(例如,如果您没有internet连接)要求您使用镜像,否则您不应该使用镜像。如果你受到TLS拦截(本质上是一个中间人的攻击,它破坏了普通的证书验证),那么你可能想用PUP来告诉你的替代CA,{{CD11}}。但是,如果您不想从PyPI安装,也可以从Github安装,例如,对于开发版本<code>pip install git+https://github.com/gcovr/gcovr.git</code>,或者对于特定版本<code>pip install https://github.com/gcovr/gcovr/archive/4.2.tar.gz</code></p>
<p>升级gcovr时,还请阅读变更日志,因为在某些边缘情况下,存在破坏兼容性的变更,例如,围绕参数处理或查找源版本的启发式。在某些情况下,这可能会改变覆盖率指标</p>
<p>还请注意,Python2是EOL,不再受支持。下一个gcovr版本(预计为4.3)将放弃对Python2.x和3.5的支持。即使Python2.7已经死了,您也不应该将<code>python</code>更改为参考Python3–这将破坏系统上的许多程序,可能包括重要的操作系统组件。相反,如果需要Python 3,请始终显式使用<code>python3</code></p>