2013-10-21 36 views
-1

我想編譯項目並在調試器中運行它。 Makefile中有以下行:如何在Makefile的這一行注意到您需要收集調試信息?

all: build_libs $(TARGET) 

我可以在此行指定gcc的-g選項嗎?或者它應該在別的地方?

Makefile的所有內容如下。

SDK_PATH:=$(shell pwd)/../../ARDroneLib 
PC_TARGET=yes 
USE_LINUX=yes 

ifdef MYKONOS 
    include $(ARDRONE_CUSTOM_CONFIG) 
    include $(ARDRONE_BUILD_CONFIG) 
else 
    include $(SDK_PATH)/Soft/Build/custom.makefile 
    include $(SDK_PATH)/Soft/Build/config.makefile 
endif 

ifeq "$(RELEASE_BUILD)" "yes" 
    ARDRONE_TARGET_DIR=$(shell pwd)/../../Build/Release 
else 
    ARDRONE_TARGET_DIR=$(shell pwd)/../../Build/Debug 
endif 

TARGET=video_opencv 

SRC_DIR:=$(shell pwd)/../Sources 

# Define application source files 
GENERIC_BINARIES_SOURCE_DIR:=$(SRC_DIR) 

GENERIC_BINARIES_COMMON_SOURCE_FILES+=\ 
Video/pre_stage.c\ 
Video/post_stage.c\ 
Video/display_stage.c\ 
image_processing.c\ 
controls.c 

GENERIC_INCLUDES+=     \ 
    $(SRC_DIR) \ 
    $(LIB_DIR) \ 
    $(SDK_PATH)/Soft/Common \ 
    $(SDK_PATH)/Soft/Lib 

GENERIC_TARGET_BINARIES_PREFIX= 

GENERIC_TARGET_BINARIES_DIR=$(ARDRONE_TARGET_DIR) 

GENERIC_BINARIES_SOURCE_ENTRYPOINTS+=   \ 
    ardrone_testing_tool.c 

GENERIC_INCLUDES:=$(addprefix -I,$(GENERIC_INCLUDES)) 
GENERIC_INCLUDES+=`pkg-config --cflags opencv` 

GENERIC_LIB_PATHS=-L$(GENERIC_TARGET_BINARIES_DIR) 
GENERIC_LIBS=-lpc_ardrone -lrt -lgtk-x11-2.0 -lcairo -lgobject-2.0 -lgdk-x11-2.0 -lm `pkg-config --libs opencv` 


SDK_FLAGS+="USE_APP=yes" 
SDK_FLAGS+="APP_ID=linux_video_demo" 

export GENERIC_CFLAGS 
export GENERIC_LIBS 
export GENERIC_LIB_PATHS 
export GENERIC_INCLUDES 
export GENERIC_BINARIES_SOURCE_DIR 
export GENERIC_BINARIES_COMMON_SOURCE_FILES 
export GENERIC_TARGET_BINARIES_PREFIX 
export GENERIC_TARGET_BINARIES_DIR 
export GENERIC_BINARIES_SOURCE_ENTRYPOINTS 

# Bug fix ... 
export GENERIC_LIBRARY_SOURCE_DIR=$(GENERIC_BINARIES_SOURCE_DIR) 


.PHONY: $(TARGET) build_libs 

all: build_libs $(TARGET) 

$(TARGET): 
    @$(MAKE) -C $(SDK_PATH)/VP_SDK/Build $(TMP_SDK_FLAGS) $(SDK_FLAGS) $(MAKECMDGOALS) USE_LINUX=yes 
    mv $(ARDRONE_TARGET_DIR)/ardrone_testing_tool $(TARGET) 
    mv $(TARGET) $(ARDRONE_TARGET_DIR)/ 

$(MAKECMDGOALS): build_libs 
    @$(MAKE) -C $(SDK_PATH)/VP_SDK/Build $(TMP_SDK_FLAGS) $(SDK_FLAGS) $(MAKECMDGOALS) USE_LINUX=yes 

build_libs: 
    @$(MAKE) -C $(SDK_PATH)/Soft/Build $(TMP_SDK_FLAGS) $(SDK_FLAGS) $(MAKECMDGOALS) USE_LINUX=yes 

回答

0

好像如果添加GENERIC_CFLAGS = -g這個makefile文件,它應該工作。但是,真正的編譯工作不是由這個makefile完成的,它是通過子目錄$(SDK_PATH)/VP_SDK/Build中的makefile來完成的(請注意$(TARGET)規則如何在-C標誌的子目錄中重新調用make)。所以我們無法確切地知道通過查看這個makefile需要做什麼。

相關問題