开发者

Portably Compile Entire Directory

开发者 https://www.devze.com 2023-03-10 00:11 出处:网络
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

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 $@

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

0

精彩评论

暂无评论...
验证码 换一张
取 消