1

curses.h を使用して、以下のサンプル コードのメイクファイルを作成するのに苦労しています。

#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)

4

2 に答える 2

1

-I を追加するだけです。-L. CFLAGS マクロに追加すると、プロジェクト ライブラリがプリプロセッサとリンケットの両方の検索パスに追加されます。これは、プロジェクト フォルダーに curses ヘッダー ファイルとライブラリ ファイルがあれば機能するはずです。ヘッダーまたはライブラリ ファイルが別のフォルダーにある場合は、それに応じて -I または -L フラグを変更します。

あなたの最後のコメントは、前処理とコンパイルはうまくいったが、リンカーがライブラリファイルを見つけることができなかったことを示唆しています。

一般的な注意として、コンパイラ フラグを CFLAGS に配置し、リンカー フラグを別のマクロ (LDFLAGS など) に配置することをお勧めします。

インクリメンタル コンパイルを有効にするには、マクロ DEPS も使用する必要があります。通常、コンパイル規則への依存関係として使用されますが、個別に持っていないため、次のようにすべてに加えて配置できます。

all : $(DEPS)
于 2014-05-19T20:35:37.070 に答える