gpt4 book ai didi

c++ - Project-Euler(Make/Source)有用的文件夹结构吗?

转载 作者:行者123 更新时间:2023-11-30 19:14:12 24 4
gpt4 key购买 nike

我目前正在尝试为Project-Euler想出一个可靠的文件夹结构。 .

我目前的想法是这样的结构:

.
└── project-euler/
├── resources
│ ├── primes.h
│ ├── primes.c
│ ├── factors.h
│ ├── factors.c
│ └── ...
├── 001_name_of_procect_one.c
├── 001_name_of_project_one.o
├── 002_name_of_project_two.c
├── 002_name_of_project_two.o
└── ...

我对这种结构的问题是,我将所有项目都放在一个文件夹中,但我不知道如何编写 Makefiles对于这种结构。

我可以为每个项目创建一个单独的目录,但随后我必须编写类似 #include "../resources/primes.h" 的内容而且我不喜欢这种方法。

在这种情况下使用的典型项目结构是什么?我怎样才能写一个Makefile对于所有小项目,同时仍将它们保留在同一目录中?

编辑:我使用 clang顺便说一下。

最佳答案

如果将实用程序文件保存在 resources 子目录中,则可以在主目录中创建单独的解决方案文件,其中在顶部包含必要的头文件,例如:

#include "resources/primes.h"

并在底部包含实际代码

#include "resources/primes.c"

这样,您甚至不需要 Makefile,因为默认规则将允许您直接从相应的源文件创建每个目标:

make 002_name_of_project_two

make 甚至不会生成目标文件,而只会生成可执行文件。

我个人更喜欢项目文件的较短名称,例如p42.c

Makefile 对于点击 make 或 IDE 的构建按钮仍然有用。一个衬垫就足够了:

all: p42

但是您可能想要添加一些依赖项,以便仅在更改实用程序源时重新编译您的目标。添加这些行:(在第二行开头有一个 TAB)

%: %.c $(wildcard resources/*)
clang $(CFLAGS) $(LFLAGS) -o $@ $<

您仍然应该向 CFLAGS 环境变量添加适当的选项,以利用编译器捕获愚蠢错误的能力:-Wall -Wextra -Werror for gcc-Weverything 用于 clang

关于c++ - Project-Euler(Make/Source)有用的文件夹结构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34485248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com