小编Cus*_*zer的帖子

带参数"-S -save-temps"的gcc将中间文件放在当前目录中

参数-S -save-temps工作正常,只要我不在具有相同名称的文件上使用它们.

考虑以下情况:我有一个带有主目录的项目和一个带有名称的子目录,subDir并且在两个目录中都放置了带有名称的文件file.c.如果我现在gcc -S -save-temps file.cpp subDir/file.c只调用一个名称file.i将生成的中间文件.

正如man文件gcc告诉我的那样,这是预期的行为,当使用时,中间文件将始终放在当前路径中-save-temps.

我的问题是,我正在研究我事先不知道的项目.很可能,有人在他的Makefiles中构建了上面提到的例子.在那种情况下,我会被卡住,因为我需要两个中间文件.

对我正在构建的系统说几句话(为了更好地理解):我的工具用于make --just-print收集调用,项目的make文件调用.我扫描这些调用编译器调用并添加-save-temps-S选项.目的是获取在编译项目过程中使用的每个预处理文件.

你有什么想法,即使上面提到的例子应该出现,我怎么能得到每个预处理的文件?

c c++ compiler-construction gcc g++

13
推荐指数
2
解决办法
2万
查看次数

解决C和C++中的typedef

我正在尝试在任意C++或C项目中自动解析typedef .

因为某些typedef是在系统头文件中定义的(例如uint32),我现在正试图通过在我的代码文件上运行gcc预处理器然后扫描预处理文件中的typedef来实现这一点.然后我应该能够替换项目代码文件中的typedef.

我想知道,如果还有另一种,也许更简单的方法,我就会失踪.你能想到一个吗?

原因,我为什么要这样做:我正在使用不同的工具从C/C++项目中提取代码度量.指标是基于方法的.提取指标后,我必须合并由不同工具生成的数据.问题是,其中一个工具解析了typedef而其他工具则没有.如果有typedef用于方法的参数类型,我将度量标准映射到不同的方法名称,这些方法名称实际上是指源代码中的相同方法.

在源代码中考虑这个方法:int test(uint32 par1, int par2)
运行我的工具后,我有指标,映射到一个名为的方法int test(uint32 par1, int par2),我的一些指标被映射到int test(unsigned int par1, int par2).

c c++ typedef c-preprocessor

8
推荐指数
1
解决办法
2590
查看次数

记录调用make的命令

有没有办法记录命令,调用编译程序?我知道参数-n-p,但他们要么不解决if条件,只是打印出来.或者,当在Makefile中调用"make"时,它们不起作用.

makefile

8
推荐指数
2
解决办法
8084
查看次数

我需要一个树转储选项,它在当前的gcc版本中不再存在

较旧版本的gcc(例如4.0.2或4.1.2)可以选择-df(参见http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Debugging-Options.html#index-fdump_002drtl_002dcfg- 357).我用这个选项转储文件filename.c.134r.life2filename.c.126r.life1,因为我想提取一些值,这些文件(例如,用于每个方法的寄存器计数)的.

问题是,在当前版本的gcc(例如4.2.2)中,此选项不再存在.还有其他选项,名称的树转储filename.c.135r.jump几乎相同.但是这个转储中的寄存器计数也丢失了,我找不到具有该值的转储.

还有一个参数,它给了我当前gcc版本中的旧转储吗?

c c++ compiler-construction gcc

6
推荐指数
1
解决办法
1326
查看次数

JavaFX字体渲染中的字符间距(字距调整)错误(在Linux中)

我已经开始在JavaFX中开发一个应用程序而且我遇到了一个问题,我发现很少有用的信息:Linux中字符之间的间距非常不均匀.我不是在谈论不同角色的宽度,而是在谈论角色之间的空间.

它在普通文本中可见,但以下示例比普通文本更好地说明了效果.看看第一行.前两个字符之间的空间小于第二个和第三个字符之间的空格.这也发生在第六和第七个角色之间以及其他几个角色:

字符间距不均匀

Swing没有这个问题,JavaFX在Windows中没有这个问题,或者在该操作系统上几乎看不到.它似乎也不是Mac上的主要问题.为了比较,这里是Mac Retina MacBook Pro的一个示例输出,2014年中,运行OS X 10.12.6和Java 9.0.4:

在此输入图像描述

有谁知道这是否是JavaFX字体渲染引擎中的错误?如果是这样,有解决方法吗?

我真的开始怀疑我是否应该更改框架,因为在我看来这样糟糕的字体渲染是不可接受的.

关于这个问题还有另外一个问题但尚未得到解答: 为什么JavaFX在使用Text组件时在字母之间添加额外的间距以及如何修复它?

我已经能够在运行Manjaro的两台不同Linux机器上以及运行Debian的虚拟机中使用以下代码重现此问题:

package de.localtoast.fonttest;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class FontTest extends Application {

    @Override
    public void start(Stage primaryStage) {
        VBox root = new VBox();
        Label label1 = new Label("0000000000000000000000");
        Label label2 = new Label("OOOOOOOOOOOOOOOOOOOOOO");
        Label label3 = new Label("oooooooooooooooooooooo");

        root.getChildren().add(label1);
        root.getChildren().add(label2);
        root.getChildren().add(label3);

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Font Test");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args); …
Run Code Online (Sandbox Code Playgroud)

java javafx kerning subpixel font-rendering

5
推荐指数
1
解决办法
541
查看次数