如何在windows makefile 中使用python "include" 和"libs" 路径来编译文件夹中的所有python 嵌入式C++ 程序?

How to use python "include" and "libs" path in a windows makefile to compile all python embedded C++ program in a folder?

此问题中指定的 Makefile,编译文件夹中的所有 cpp 程序,但不使用 python 嵌入式 cpp 程序。

all: myUB

sourcesC := $(wildcard ../src/*.cpp)

objectsC := $(patsubst %.cpp,%.o,$(sourcesC))

INPATH=-I"C:/Python27/include"

LIBPATH=-L"C:/Python27/libs"-lpython27

myUB:

    @echo 'Building target $@'

    g++ -O0 -Wall -c -g3 -fmessage-length=0 \
        $(sourcesC)

    del *.o

clean:

您的最终生成文件可能类似于:

all: myUB

sourcesC := $(wildcard ../src/*.cpp)

# Not used
#objectsC := $(patsubst %.cpp,%.o,$(sourcesC))

INC = -IC:\Python27\include

LIBS = -LC:\Python27\libs -lpython27

myUB:
    @echo 'Building target $@'
    g++ -O0 -Wall -g3 -fmessage-length=0 -o myprog.out $(sourcesC) $(INC) $(LIBS)

clean:
    rm myprog.out

更新

对于 WinMain() 的未定义引用,这意味着链接器无法在您的代码中找到此函数。您需要包含一个包含它的 library/object 或者您可以在 cpp 文件中自己定义它,例如:

#include <windows.h>

int WINAPI (*MyDummyReferenceToWinMain)(HINSTANCE hInstance, ..., int
nShowCmd ) = &WinMain;

我从 here 那里得到了函数模板。

但这似乎意味着您正在创建一个 windows 应用程序,而不是使用 int main(...) 入口点的控制台应用程序。

更新2

我已经制作了一个新的 makefile 来执行您在最新评论中所要求的,这似乎是为每个源文件创建一个可执行文件 - 我假设每个源文件都有自己的主文件。

# Build vars
CXX = g++
CXX_FLAGS = -O0 -Wall -g3
INC = -IC:\Python27\includ
LIBS = -LC:\Python27\libs -lpython27

# Sources
SRC_DIR=src
SOURCES = $(wildcard $(SRC_DIR)/*.cpp)
$(info SOURCES: $(SOURCES))

# Executables
EXE_DIR=bin
EXECUTABLES = $(subst $(SRC_DIR)/,$(EXE_DIR)/,$(subst cpp,out,$(SOURCES)))
$(info EXECUTABLES: $(EXECUTABLES))

$(info ----)

# Directories
DIRS = $(EXE_DIR)

# Rule to create folders and compile executables
all: $(DIRS) $(EXECUTABLES)

# Pattern rule to build each executable
$(EXE_DIR)/%.out : $(SRC_DIR)/%.cpp
    @echo "compiling $< --> $@"
    @$(CXX) $(CXX_FLAGS) -o $@ $< $(INC) $(LIBS)

# Rule to create output dirs
$(DIRS):
    @echo "Creating output folders"
    @mkdir -p $(EXE_DIR)

# Rule to clean up
clean:
    @echo "Cleaning"
    @rm -rf $(EXE_DIR)

这应该在文件夹 bin/ 中为文件夹 src/ 中的每个源文件 (.cpp) 创建一个可执行文件。