当前位置: 动力学知识库 > 问答 > 编程问答 >

c++ - Portably Compile Entire Directory

问题描述:

Is there a clean/portable way to descend recursively from a given directory, compiling all found .cpp files into a single output file? I'm not sure if makefiles are capable of this sort of thing, or if it's a job for some kind of build script, but I'd like to avoid maintaining various IDEs' project files along with my code.

网友答案:

There are different things that you can do here. I would suggest that you use a multiplatform build system, and follow the documentation for it. I have used CMake in the past, but I wouldn't know how to tell it to compile all files in a directory.

The advantage is that the user can use CMake to generate project files for most common IDEs, so it would allow VisualStudio users to generate VS solutions, MacOSX users to generate Xcode projects, Eclipse CDK projects in pretty much any environment, Makefiles...

网友答案:

There's the wildcard function which can be used to match a pattern like so:

CXX_FILES = $(wildcard src/*.cpp)   # All .cpp files in the directory

This is not recursive, but will at least save you from having to manually specify the files in a certain directory. The rule for building them would look something like this:

CXX_FILES = $(wildcard src/*.cpp)   # All .cpp files in the directory
OBJ_FILES = $(CXX_FILES:src/%.cpp=$(OBJ_DIR)/%.o)   # Corresponding .o files

# Rules
all: $(OBJ_FILES)
    g++ $(OBJ_FILES) -o output_filename

$(OBJ_DIR)/%.o: src/%.cpp
    g++ -c $< -o [email protected]

Oh, and to answer your question, this method is completely portable.

分享给朋友:
您可能感兴趣的文章:
随机阅读: