我正在努力使用curses.h为下面的示例代码制作一个makefile。
#include <stdio.h>
#include <stdlib.h>
#include<curses.h>
int main(){
WINDOW *initscr(void);
initscr();
int endwin(void);
return 0;
}
我在Netbeans中包含了库和标题,但是当我尝试使用makefile构建时:
CC=C:\TDM-GCC-64\bin\gcc
CFLAGS=-std=gnu99 -Werror -Wall -lm -lncurses
DEPS=curses.h
OUTPUT=main
all:
echo "Building all"
$(CC) $(CFLAGS) render.c -o $(OUTPUT)
它给了我:
echo "Building all"
Building all
C:\TDM-GCC-64\bin\gcc -std=gnu99 -Werror -Wall -lm -lncurses render.c -o main
render.c:3:19: fatal error: curses.h: No such file or directory
#include<curses.h>
^
compilation terminated.
make.exe": *** [all] Error 1
BUILD FAILED(退出值2,总时间:150ms)
答案 0 :(得分:1)
只需添加-I。 -L。对于CFLAGS宏,这会将项目库添加到预处理器和链接集的搜索路径中。如果你在项目文件夹中有curses头文件和库文件,这应该可以工作。如果头文件或库文件位于不同的文件夹中,则只需相应地修改-I或-L标志。
您的上一条评论表明预处理和编译工作正常,但链接器无法找到库文件。
总的来说,最好将编译器标志放到CFLAGS和链接器标志到另一个宏,比如LDFLAGS。
宏DEPS也应该用于启用增量编译。它通常用作编译规则的依赖项,但由于你没有单独使用它,你可以把它放在除此之外:
all : $(DEPS)