2013-01-18 59 views
4

我是Code :: Blocks的新手。對於我的學習,我正在用C編寫幾個小程序(只是爲了嘗試一下)。 我試圖把它們全部放在一個項目中,因爲它們屬於同一個主題,但這不起作用,因爲它們每個都有一個主要功能。一個代碼中的多個小程序:: blocks項目

任何想法如何我可以將這些文件以某種方式放在一起,但不相互依賴?

+0

你可以創建自己的make文件 – MOHAMED

+0

對不起,對C來說是新手,你是什麼意思,以及如何做到這一點? – mvuajua

回答

1

讓我們說,你的項目包含3個C文件和每個C的文件是一個獨立的程序,它包含了自己main功能:

  • program1.c
  • program2.c
  • program3.c

所以你CA n寫一個Makefile(它的名字在你的電腦裏應該是「Makfile」)。它將建立程序您單獨要

這是你的Makefile的樣子:

all: program1 program2 program3 

%.o: %.c 
    $(CC) $(CFLAGS) -c -o [email protected] $^ 

program1: program1.o 
    $(CC) $(LDFLAGS) -o [email protected] $^ 

program2: program2.o 
    $(CC) $(LDFLAGS) -o [email protected] $^ 

program3: program3.o 
    $(CC) $(LDFLAGS) -o [email protected] $^ 

clean: 
    rm -f *.o program1 program2 program3 

你可以建立每個程序separetly

例如

$ make program1 

將建立上述的Makefile只有program1

或者你可以建立所有程序與

$make all 
+2

那麼我在哪裏輸入'$ make program1'?命令行?通常我使用F9構建和運行。 – mvuajua

+0

@mvuajua我有點困惑,爲什麼你接受這個答案,因爲它實際上並沒有回答你有關code :: blocks的問題。 – neuronet

+0

@neuronet已經有五年了,但我認爲這是我當時所做的,其他答案晚些時候纔會出現 – mvuajua

2

一個ç程序應該只包含一個主功能..把你的所有單獨的程序爲功能,並把它們放在一個C程序,你甚至可以把它放在多個文件和編譯他們..

您可以使用switch case調用不同的功能..

從所有程序中刪除main function並將它們轉換爲functions ..

呼叫他們在哪裏需要..這將幫助你..

+0

我知道一個C程序應該只包含一個主函數。我不想把它們放入函數中,因爲這些小程序是獨立的,並不屬於一個整體,所以從一個文件中調用它們對我來說都沒有意義。 – mvuajua

+0

不,這並不能幫助我,因爲我以後必須交出這些文件,然後他們必須是獨立的。我只想編譯並運行我正在處理的文件,而不是所有文件。如果沒有可能做到這一點,我會回到我的老編輯。 – mvuajua

1

在我看來,如果你開始建立一些不錯的實用功能。因此,請遵循raghu-srikanth-reddyce提供的建議,併爲每個小程序創建單獨的功能。不過我想補充一點,最好是創建一個簡單的C庫,讓它們隨時都可以鏈接到它們。大多數專業程序員都保留這樣的庫。

一個簡單的makefile將使您能夠建立一個可鏈接到的最終二進制文件。

您的編程祝你好運;)

+0

不,我只是在做教授給的任務。我只想編譯一個文件,獨立於其他文件。 – mvuajua

7

假設你的源文件被稱爲

  • PROG1。Ç
  • prog2.c
  • mylib.c
  • mylib.h

其中prog1.c的和prog2.c各自包含main()函數和mylib.c(與相應的頭文件mylib.h)包含一些應該鏈接到每個程序的庫函數。在你的Code :: Blocks項目中,你需要現在創建多個目標。從菜單中選擇「File/New/Build target ...」,並將它們命名爲「prog1」和「prog2」。現在將所有源文件添加到項目中(如果您還沒有這樣做)。

現在右鍵單擊prog1.c並從上下文菜單中選擇「屬性...」。在對話框中選擇「Build」選項卡,並確保在「屬於目標」下僅選中「prog1」。對prog2.c和目標「prog2」執行相同的操作。對於「mylib.c」,確保選中「prog1」和「prog2」。

現在,您可以輕鬆選擇構建要構建和運行的目標的UI。請注意,如果您添加另一個目標,請說「prog3」,那麼您必須再次訪問prog1.c和prog2.c的生成屬性,並取消選中「prog3」。

0

如果你想在一個文件中編譯,那麼你不需要工程文件。 只需製作一個新文件,然後將所有代碼寫入單個文件。也可以使用功能程序如果你需要它。

相關問題