我想根據是否在我的項目中的.h文件中聲明#define來在我的構建中包含不同的目錄。這是可能的還是我對這完全錯誤?是否可以測試一個C定義是否在gnu Makefile中聲明?
0
A
回答
4
是的,你是。構建系統應該配置代碼,而不是相反。您應該使用這種選項的配置腳本(或者可能切換到更高版本的系統:autotools,CMake,QMake ...)。
1
這是可能的,但你是以錯誤的方式去做的。包含不同目錄的方式有不同的make目標。如果您的代碼必須瞭解它們,請在您的編譯器開關中使用-D
。或者,如果您的構建需要能夠在其他人的系統上運行,則需要類似autoconf這樣的方法。
4
其他答案解釋了爲什麼這是一個壞主意。然而,這樣做的一種方式是通過預處理一個makefile片段:
在foo.mk.in
:
#ifdef FOO
FOO_DEFINED := y
#else
FOO_DEFINED := n
#endif
在Makefile
:
foo.mk: foo.mk.in
$(CPP) $(CPPFLAGS) -o [email protected] $<
include foo.mk
ifeq ($(FOO_DEFINED),y)
$(warning FOO is defined)
else
$(warning FOO is not defined)
endif
相關問題
- 1. 測試代碼中是否定義了未聲明的變量是否合理?
- 2. 是否可以在Puppet中「聲明」?
- 3. 是否可以在XAML中聲明一個類型別名?
- 4. 是否可以在GSP中聲明一個函數?
- 5. 如何測試一個類是否明確定義了__gt__?
- 6. 是否可以在接口聲明中聲明一個超類的鏈?
- 7. 是否可以在Spock中定義測試依賴關係?
- 8. 是否可以在C#中定義一個通用的lambda?
- 9. 是否可以分離內聯函數的聲明和定義?
- 10. 單元測試是否必須有一個聲明像「assertEquals(..)」
- 11. NUnit - 是否可以在TearDown中檢查測試是否成功?
- 12. 是否可以聲明到mysql查詢?
- 13. 瞭解gnu makefile聲明
- 14. 測試一個變量是否在JavaScript中定義?
- 15. 是否可以使用單個測試測試多個類
- 16. 你可以測試mixin是否存在?
- 17. 是否可以在TypeScript中定義string.Empty?
- 18. 是否可以編寫一個可以測試AuthorizationPolicy對象的測試?
- 19. c#可以檢查一個var是否被定義?
- 20. 是否可以在C++/CLR中實現在C#中聲明的抽象類?
- 21. 是否有可能在Java中聲明一個1位變量?
- 22. 是否有可能在vb.NET中聲明一個通用事件?
- 23. Google測試是否可以測試C代碼?
- 24. 是否可以在PHP中定義一個接口Singleton?
- 25. Puppet - 測試包是否已經定義?
- 26. 測試是否定義了MSBuild屬性?
- 27. 是否有可能用一個指針和一個聲明
- 28. 是否可以在正則表達式java中定義一個預測範圍?
- 29. 是否有可能在C++中通過模板聲明方法?
- 30. 是否可以在appCode的頭文件(.h)中自動聲明一個方法?
好工作。完成它。 – 2010-11-30 02:45:38