Mac: «Не удается найти правило для создания цели» (C, CodeLite)

GNU Make v. 2.4.1

MacOS High Sierra

Компиляция исполняемого файла с помощью clang

У меня особенная проблема с make файлом. Я склеил файл make, сгенерированный IDE CodeLite, с файлом make, который я успешно использовал для компиляции библиотеки C, в которую я пытаюсь добавить функцию. Я обернул код вокруг библиотеки, чтобы сделать исполняемый файл для тестирования. Я успешно скомпилировал его до вчерашнего дня. Я считаю, что единственное различие, которое я сделал, - это добавить «$ (OtherFlags)», чтобы настроить флаги правильно. Теперь make не работает, даже когда я удаляю это дополнение. Я получаю ошибку

No rule to make target 'Debug/main.c.o', needed by 'Debug/iceemdan-clang'. Stop.

Это производится строкой 93 make-файла.

$(LinkerName) $(OutputSwitch)$(OutputFile) @$(ObjectsFileList) $(Libpath) $(Libs) $(IncludeSwitch) $(IncludePath) $(OtherFlags)

Это тарабарщина вне его контекста, который ниже (код, закомментированный внизу, взят из исходного make-файла)

##
## Auto Generated makefile by CodeLite IDE
## any manual changes will be erased      
##
## Debug
ProjectName            :=iceemdan-clang
ConfigurationName      :=Debug
WorkspacePath          :=/Users/Common/iceemdan-dev/iceemdan-dev
ProjectPath            :=/Users/Common/iceemdan-dev/iceemdan-dev/iceemdan-clang
IntermediateDirectory  :=./Debug
OutDir                 := $(IntermediateDirectory)
CurrentFileName        :=
CurrentFilePath        :=
CurrentFileFullPath    :=
User                   :=Coleman Family
Date                   :=08/08/2018
CodeLitePath           : = "/Users/Common/Library/Application Support/CodeLite"
LinkerName             :=clang
SharedObjectLinkerName :=clang -shared -fPIC
ObjectSuffix           :=.o
DependSuffix           :=
PreprocessSuffix       :=.o.i
DebugSwitch            :=-gstab
IncludeSwitch          :=-I
LibrarySwitch          :=-l
OutputSwitch           :=-o 
LibraryPathSwitch      :=-L
PreprocessorSwitch     :=-D
SourceSwitch           :=-c 
OutputFile             :=$(IntermediateDirectory)/$(ProjectName)
Preprocessors          :=
ObjectSwitch           :=-o 
ArchiveOutputSwitch    := 
PreprocessOnlySwitch   :=-E 
ObjectsFileList        : = "iceemdan-clang.txt"
PCHCompileFlags        :=
MakeDirCommand         :=mkdir -p
LinkOptions            :=  
IncludePath            :=  /opt/local/include
IncludePCH             := 
RcIncludePath          := 
Libs                   := -lgsl -lgslcblas -lm
ArLibs                 :=  
LibPath                := $(LibraryPathSwitch) /opt/local/lib
OtherFlags             :=-DHAVE_INLINE -Wall -Wextra -std=c99 -pedantic -Wno-unknown-pragmas -Wshadow -Wpointer-arith -DCLANG

##
## Common variables
## AR, CXX, CC, AS, CXXFLAGS and CFLAGS can be overriden using an environment variables
##
AR       := ar rcus
CXX      := clang++
CC       := clang
CXXFLAGS :=  -g -O0 -Wall $(Preprocessors)
CFLAGS   :=  $(commonflags) $< -fPIC -shared -Wl $@ $(gsl_flags) -o $@ $(Preprocessors)
ASFLAGS  := 
AS       := llvm-as


##
## User defined environment variables
##
CodeLiteDir:=/Applications/codelite.app/Contents/SharedSupport/
PATH:=/Users/Common/usr/local/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/opt/local/bin:/opt/local/sbin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/TeX/texbin:/opt/local/include
Srcs=main.c 

Objects0=$(IntermediateDirectory)/main.c$(ObjectSuffix) 



Objects=$(Objects0) 

##
## Main Build Targets 
##
.PHONY: all clean PreBuild PrePreBuild PostBuild MakeIntermediateDirs
all: $(OutputFile)

PreBuild:
    @echo Executing Pre Build commands ...
    $(eval gsl_flags = -L/opt/local/lib -lgsl -lgslcblas -lm -I/opt/local/include -DHAVE_INLINE)
    $(eval commonflags := -Wall -Wextra -std=c99 -pedantic -Wno-unknown-pragmas -Wshadow -Wpointer-arith)
#   $(eval commonflags += $(CFLAGS))
#   $(eval commonflags += -g -DEEMD_DEBUG=0)
    $(eval commonflags += -DCLANG)
    $(eval PREFIX ?= /usr)
    @echo Done

$(OutputFile): $(IntermediateDirectory)/.d $(Objects) 
    @$(MakeDirCommand) $(@D)
    @echo "" > $(IntermediateDirectory)/.d
    @echo $(Objects0)  > $(ObjectsFileList)
    $(LinkerName) $(OutputSwitch)$(OutputFile) @$(ObjectsFileList) $(Libpath) $(Libs) $(IncludeSwitch) $(IncludePath) $(OtherFlags)

#   clang $(gsl_flags) $(commonflags) -o ./Debug/main.c.o

MakeIntermediateDirs:
    @test -d ./Debug || $(MakeDirCommand) ./Debug


$(IntermediateDirectory)/.d:
    @test -d ./Debug || $(MakeDirCommand) ./Debug

#PreBuild:

# all

#Debug/main.c.o: main.c 
#src/eemd.h | Debug
#   clang $(commonflags) -c $< $(gsl_flags) -o $@

#Debug/main.c.a: Debug/main.c.o
#   $(AR) rcs $@ $^

#eemd: main.c src/eemd.h
#   clang $(commonflags) $< -fPIC -shared -Wl, ,$@ $(gsl_flags) -o $@

Жалоба в том, что main.c.o не может быть собран, хотя main.c существует. main -d, похоже, указывает на то, что он ищет main.c. *, но не заботится о поиске самого main.c.

Trying pattern rule with stem 'main.c'.

Это происходит несколько раз в нескольких разных каталогах. Я вижу такие ответы, как

Rejecting impossible implicit prerequisite 'Debug/main.c.l'.

Ни разу не видел попытки найти main.c.

Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
166
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваше промежуточное звено должно называться main.o, а не main.c.o. Проблема, вероятно, здесь:

Objects0=$(IntermediateDirectory)/main.c$(ObjectSuffix) 

Должен быть

Objects0=$(IntermediateDirectory)/main$(ObjectSuffix) 

Думаю...

Это и несколько настроек CFLAGS помогли ему скомпилировать. Я все еще получаю предупреждения об отсутствии ссылок на библиотеки, но не об их функциях. Спасибо!

Chuck 10.09.2018 17:57

Другие вопросы по теме