2014-12-05 234 views
1

這是我的第一個C++程序,也是我第一次創建一個Makefile,所以我很不熟悉它。創建一個包含僅包含頭文件的庫的Makefile

我有我的,其中包括GLM庫這樣的主文件raytracer.cpp:

#include "glm/glm.hpp" 

raytracer.cpp和GLM目錄都在同一目錄中。

如何爲這個項目創建一個makefile?

glm library是僅頭文件的庫。那麼我需要編譯glm目錄中的所有文件嗎?或者只是glm.hpp?

回答

2

如果只有在所有代碼位於標題中而沒有在相應源中定義任何內容的情況下,則不必在Makefile中指定任何內容,但是必須指定raytracer.cpp的規則。標題代碼將自動插入include語句所在的位置。您只需如果你需要包括(庫,以.so .A等),其他對象或共享對象)

欲瞭解更多信息如何創建簡單的makefile看到這裏指定它:How to make SIMPLE C++ Makefile?

1

如果你有一個單獨的raytracer.cpp文件,它是你的應用程序,並且一些(本地)頭文件是你需要的唯一的makefile內容(並且這只是爲了在頭文件改變時重新生成二進制文件)。

raytracer: raytracer.hpp glm/glm.hpp 

就是這樣。

只需創建Makefile並運行make raytracer。 (你也可以在沒有創建Makefile的情況下運行該命令,但是如果只有標題更改,將不知道重新生成二進制文件。)

如果您需要任何特殊標記/ etc。你可以使用內置的make變量來設置它們。像CFLAGSLDFLAGSLDLIBSCPPFLAGS

10.3 Variables Used by Implicit Rules的手冊列表以及有關他們更多的參閱。

中間鏈接的票據上的接受答案也包含大量有用的信息。