Собственно, ситуация следующая.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.mkifneq ($(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
почему вообще что-то собирается в /projectB/projectA ?можно заменить цель 'all' так:
all: make_projectB file_writerи добавить дополнительную цель (выполнить мейкфайл в каталоге projectB):
make_projectB:
$(MAKE) -C projectBНа будущее: то, что вы пишете свои мейкфайлы - очень плохо и дурно, попробуйте cmake, например.
> почему вообще что-то собирается в /projectB/projectA ?
> можно заменить цель 'all' так:
> all: make_projectB file_writer
> и добавить дополнительную цель (выполнить мейкфайл в каталоге projectB):
> make_projectB:
> $(MAKE) -C projectB
> На будущее: то, что вы пишете свои мейкфайлы - очень плохо и
> дурно, попробуйте cmake, например.Давай гуглю об этом расскажем, андроид плохо и и дурно собирают.
>> почему вообще что-то собирается в /projectB/projectA ?
>> можно заменить цель 'all' так:
>> all: make_projectB file_writer
>> и добавить дополнительную цель (выполнить мейкфайл в каталоге projectB):
>> make_projectB:
>> $(MAKE) -C projectB
>> На будущее: то, что вы пишете свои мейкфайлы - очень плохо и
>> дурно, попробуйте cmake, например.
> Давай гуглю об этом расскажем, андроид плохо и и дурно собирают.понятно, что есть особенные проекты