1
我想用Makefile編譯項目。使用定義目標在Linux上進行編譯
我在我的.h的一個定義用於Linux目標
#define LINUX_TARGET (COMPILER_GCC_4_4_1|FAMILY_LINUX|TYPE_X86)
...
#ifdef _LINUX_TARGET_
#define __linux__
#define TARGET LINUX_TARGET
...
#ifdef __linux__
#define __LINUX__
#endif
所以在我的Makefile我說,我會用這個目標:
...
CFLAGS += -D_LINUX_TARGET_
...
Butwhen我編譯我得到這個錯誤:
../../../../../../../Generic/Common/Include/target_definition.h:145:0: warning: "__linux__" redefined [enabled by default]
#define __linux__
^
../../../RefFT/Float/src/LIMITOR_main_32f.c:1:0: note: this is the location of the previous definition
/*---------------------------------------------------------------------------
^
我不明白爲什麼,beceause這個工程爲MacOS或Windows目標...
編輯
約阿希姆Pileborg的答案後,我做了什麼:
#define LINUX_TARGET (COMPILER_GCC_4_4_1|FAMILY_LINUX|TYPE_X86)
...
#ifdef _LINUX_TARGET_
#ifndef __linux__
#define __linux__
#endif
#define TARGET LINUX_TARGET
...
#ifdef __linux__
#define __LINUX__
#endif
所以我不必定義它? – leykan
正確。如果你想檢查是否定義了它,並定義它,那麼你可以先使用#ifndef __linux__。 – jakebower
但是,如果我沒有在我的Makefile中定義它,我得到這個錯誤'#error你必須在你的編譯器項目屬性中定義一個目標。「如果不是這樣,它會是什麼? – leykan