小编ruv*_*vim的帖子

如何强制makefile重建目标

我有一个生成的makefile,然后调用另一个makefile.由于这个makefile调用更多makefile来完成工作,因此它并没有真正改变.因此,它一直认为项目是建立和最新的.

dnetdev11 ~ # make
make: `release' is up to date.
Run Code Online (Sandbox Code Playgroud)

如何强制makefile重建目标?

clean = $(MAKE) -f ~/xxx/xxx_compile.workspace.mak clean


build = svn up ~/xxx                                                       \
        $(clean)                                                                \
        ~/cbp2mak/cbp2mak -C ~/xxx ~/xxx/xxx_compile.workspace        \
        $(MAKE) -f ~/xxx/xxx_compile.workspace.mak $(1)                    \


release:
        $(build )

debug:
        $(build DEBUG=1)

clean:
        $(clean)

install:
        cp ~/xxx/source/xxx_utility/release/xxx_util /usr/local/bin
        cp ~/xxx/source/xxx_utility/release/xxxcore.so /usr/local/lib
Run Code Online (Sandbox Code Playgroud)

注意:删除名称以保护无辜者

编辑:最终修正版:

clean = $(MAKE) -f xxx_compile.workspace.mak clean;


build = svn up;                                         \
        $(clean)                                        \
        ./cbp2mak/cbp2mak -C . xxx_compile.workspace;   \
        $(MAKE) -f xxx_compile.workspace.mak    $(1);   \


.PHONY: release debug clean …
Run Code Online (Sandbox Code Playgroud)

linux makefile

159
推荐指数
9
解决办法
17万
查看次数

如何在 GNU Make 中更改当前目录

我想将带有源的目录与带有目标的目录分开。似乎从 Makefile 更改当前工作目录应该是最简单的解决方案。

由于以下缺点,明确的目标路径是不够的:

  1. Makefile 中的冗余代码,因为对目标的每个引用都应以变量为前缀。
  2. 更复杂的命令行来构建特定的中间目标(更糟糕的调试)。

另请参阅Pauls 的规则 #3

如果目标构建在当前工作目录中,那么生活是最简单的。

关于 VPATH——我也同意要求开发人员“在运行 make 之前切换到目标目录是一种痛苦”。

makefile guile gnu-make

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

如何定义VALUE和TO

我想要实现的第四字VALUETO(在仿真计算机一个RPC/8 的Minecraft MOD).只要我在编译时不使用它,我最好的尝试就会给我一组工作正常的单词.更具体的VALUE工作,但TO没有.

: VALUE CREATE , DOES> @ ;
: TO ' 3 + ! ;
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一切我能想到的工作,我的最佳尝试让我得到了这个:

['] NameOfAValue 3 + !
Run Code Online (Sandbox Code Playgroud)

需要注意的是该处理器是不是一个纯粹的6502,但一个65EL02的自定义变种65816.

编辑#1:不知怎的,我忘了调用CREATE的价值.应该一直都在那里.编辑#2:我也有3+在TO调换了...哎呀.它本来应该是另一种方式.

6502 forth

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

如何实现字符串数组?

当我在Forth的堆栈上给出一个数字时,我试图实现一个从数组中生成字符串的单词.

我的第一次天真尝试是:

create myarray s" Alpha" , s" Beta" , s" Charlie" ,
Run Code Online (Sandbox Code Playgroud)

这被接受,但它没有按预期工作 - myarray @ type产生不一致的输出(而不是我天真的期望它可能打印"Alpha").

在网上搜索时,我在Gforth文档中发现创建的字符串s"具有有限的生命周期,这意味着我的ansatz必然会从一开始就失败.另一方面,根据Len的Forth Tutorial 中的Fours部分中的数组,即使是常规对象的数组似乎也没有标准化.

<Update>显然,这对Forth来说不是一个小问题.Web上有一些库实现了缺少的字符串功能:FFL(str模块)和Bernd Paysan的字符串函数.这是一个很好的起点,虽然它仍然需要工作从那里到一个字符串数组.</更新>

那么如何实现一个从给定数组返回字符串的单词呢?

arrays string forth

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

如何在 Forth 中包含 C 库

默认情况下,Forth 只有少量的工作库,所以一切都必须从头开始编程。原因是,基于堆栈的 Forth 虚拟机将自己标识为一个超薄系统。

根据 Gforth 手册,可以使用现有的 C 库并访问用 C 编写的预编译图形库和游戏引擎。 C项目。

我从头开始用 C 创建了一个库。它提供了一个 add 函数,可以从主程序中调用。这些文件被编译和链接,它工作正常。

### add.c ###
int add(int a, int b) {
  return a + b;
}
### add.h ###
int add(int, int);

### main.c ###
#include <stdio.h>
#include "add.h"
void main() {
  printf("5 + 7 = %d\n", add(5,7));
}

### compile ###
gcc -c -fPIC add.c
gcc -c main.c
gcc main.o add.o
./a.out
5 + 7 = 12
Run Code Online (Sandbox Code Playgroud)

计划是使用这个来自 Forth 的预编译 c 库。Gforth 编译器为此提供了一个特殊的关键字,它将 Forth …

forth ffi include gforth

4
推荐指数
1
解决办法
534
查看次数

Forth 值与变量有何不同?

阅读 Gforth 手册,可以使用单词 来更改值TO,那么它与变量有何不同?

https://gforth.org/manual/Values.html

forth

3
推荐指数
1
解决办法
268
查看次数

如何从 Gforth 网站读取原始代码?

我想要一个像这样的词

read-site ( add n buff max -- n flag )
Run Code Online (Sandbox Code Playgroud)

其中“add n”是站点名称缓冲区,“buff max”是应读取 ASCII 文本的缓冲区,“n”是读取的字节数,flag如果操作成功则为 true。

这在 Linux、Android 或 Windows 的 Gforth 中可能吗?

networking forth gforth

2
推荐指数
1
解决办法
396
查看次数

标签 统计

forth ×5

gforth ×2

makefile ×2

6502 ×1

arrays ×1

ffi ×1

gnu-make ×1

guile ×1

include ×1

linux ×1

networking ×1

string ×1