Портативно компилировать весь каталог - PullRequest
1 голос
/ 31 мая 2011

Существует ли чистый / переносимый способ рекурсивного спуска из заданного каталога, скомпилировав все найденные .cpp файлы в один выходной файл?Я не уверен, способны ли make-файлы к таким вещам или это работа для какого-то сценария сборки, но я бы хотел избежать поддержки файлов проекта различных сред IDE вместе с моим кодом.

Ответы [ 2 ]

2 голосов
/ 31 мая 2011

Есть разные вещи, которые вы можете сделать здесь.Я бы посоветовал вам использовать многоплатформенную систему сборки и следовать документации по ней.Я использовал CMake в прошлом, но я не знаю, как сказать ему, чтобы компилировать все файлы в каталоге.

Преимущество заключается в том, что пользователь может использовать CMake для генерации файлов проектов для большинства распространенных сред IDE, что позволяет пользователям VisualStudio создавать решения VS, пользователям MacOSX - проекты Xcode, проекты Eclipse CDK практически в любой среде., Makefiles ...

2 голосов
/ 31 мая 2011

Есть подстановочная функция , которую можно использовать для сопоставления с шаблоном, например так:

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

Это не рекурсивно, но, по крайней мере, избавит вас от необходимости вручную указыватьфайлы в определенном каталоге.Правило их построения выглядело бы примерно так:

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

О, и, чтобы ответить на ваш вопрос, этот метод полностью переносим.

...