URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9127
[ Назад ]

Исходное сообщение
"Редактирования makefile в линкованных проектах"

Отправлено ReRayne , 12-Май-11 17:37 
Собственно, ситуация следующая.

Linux Ubuntu + Eclipse CDT

Есть проект А. У него в корневой папке лежит его makefile, который собирает проект.
Проект А успешно собирается.

Есть проект В. У него свой makefile, который билдит только его. При чем src лежит просто в папке /projectB, а makefile лежит в /projectB/Debug.

К проекту В прилинкован проект А(/projectB/projectA). Но вот только незадача, при компиляции проект В пытается собрать проект А своим собственным мейком и ни в какую не хочет запускать makefile проекта A.

Как надо изменить makefile, чтобы перед сборкой проекта B сначала собирался проект А?

Текст makefile:

-include ../makefile.init

RM := rm -rf

# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
-include src/subdir.mk
-include objects.mk

ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
endif

-include ../makefile.defs

# Add inputs and outputs from these tool invocations to the build variables

# All Target
all: file_writer


# Tool invocations
file_writer: $(OBJS) $(USER_OBJS)
    @echo 'Building target: $@'
    @echo 'Invoking: GCC C Linker'
    gcc  -o"file_writer" $(OBJS) $(USER_OBJS) $(LIBS)
    @echo 'Finished building target: $@'
    @echo ' '

# Other Targets
clean:
    -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) file_writer
    -@echo ' '

.PHONY: all clean dependents
.SECONDARY:

-include ../makefile.targets


Содержание

Сообщения в этом обсуждении
"Редактирования makefile в линкованных проектах"
Отправлено sany , 12-Май-11 18:46 
почему вообще что-то собирается в /projectB/projectA ?

можно заменить цель 'all' так:
all: make_projectB file_writer

и добавить дополнительную цель (выполнить мейкфайл в каталоге projectB):
make_projectB:
    $(MAKE) -C projectB

На будущее: то, что вы пишете свои мейкфайлы - очень плохо и дурно, попробуйте cmake, например.


"Редактирования makefile в линкованных проектах"
Отправлено Вова , 13-Май-11 09:19 
> почему вообще что-то собирается в /projectB/projectA ?
> можно заменить цель 'all' так:
> all: make_projectB file_writer
> и добавить дополнительную цель (выполнить мейкфайл в каталоге projectB):
> make_projectB:
>     $(MAKE) -C projectB
> На будущее: то, что вы пишете свои мейкфайлы - очень плохо и
> дурно, попробуйте cmake, например.

Давай гуглю об этом расскажем, андроид плохо и и дурно собирают.


"Редактирования makefile в линкованных проектах"
Отправлено sany , 13-Май-11 16:00 
>> почему вообще что-то собирается в /projectB/projectA ?
>> можно заменить цель 'all' так:
>> all: make_projectB file_writer
>> и добавить дополнительную цель (выполнить мейкфайл в каталоге projectB):
>> make_projectB:
>>     $(MAKE) -C projectB
>> На будущее: то, что вы пишете свои мейкфайлы - очень плохо и
>> дурно, попробуйте cmake, например.
> Давай гуглю об этом расскажем, андроид плохо и и дурно собирают.

понятно, что есть особенные проекты