скомпилировать папку cpp файлов в GNU g ++ с помощью команд Powershell - PullRequest
0 голосов
/ 16 октября 2018

Я ищу способ передачи полных папок команд c ++ в g ++, чтобы мне не приходилось вводить 25 имен файлов в команду g++.

Я использую Powershell и подумал, что могу каким-то образом использовать конвейер с Get-childItem -Name -Path *.cpp.Таким образом, вся папка может быть скомпилирована за один раз, и у меня не будет шанса пропустить файл или неправильно указать имя файла, и она будет достаточно модульной, чтобы я мог просто использовать Set-Location folderpath перед вставкой, и не нужно было бы каждый раз писать новый make-файл.Я делаю связанную программу со средним и большим количеством связанных файлов.

Это возможно / практично, или я должен придерживаться make-файла?

Например:
У меня есть элеватор, заимствованный из как программировать книга, которая имеет 12 заголовочных файлов, 12 классов, сохраненных в отдельных файлах cpp, и 1 основное исполнение cpp в C:\Users\Noah\Desktop\ripsfromthebook\ch09\elevator.

давайте предположим, что все необходимое для работы программы присутствует, и если вы набрали в каждом из нихИмя файла cpp в команде g ++ правильно скомпилирует в рабочий файл a.exe.

Они называются:

bell.cpp
bell.h
building.cpp
building.h
button.cpp
button.h
clock.cpp
clock.h
door.cpp
door.h
elevator.cpp
elevator.h
elevatorButton.cpp
elevatorButton.h
ElevatorSimulation.cpp
floor.cpp
floor.h
floorButton.cpp
floorButton.h
light.cpp
light.h
person.cpp
person.h
scheduler.cpp
scheduler.h

Было бы здорово, если бы я мог использовать что-то похожее на Get-ChildItem -Name -Path *.cpp | g++ -g чтобы все 13 ~.cpp имен файлов использовались в качестве входных данных вместо того, чтобы записывать этого монстра {см. ниже} в команды powershell.

Или используя массив строк для сохранения вывода childItem, выполните g ++

$x = Get-ChildItem -name -path *.cpp
g++ -g $x -o main

лучше, чем этот монстр.

g++ -g bell.cpp building.cpp button.cpp clock.cpp door.cpp elevator.cpp elevatorButton.cpp ElevatorSimulation.cpp floor.cpp floorButton.cpp light.cpp person.cpp scheduler.cpp

краткосрочное решение Я копирую / вставляю вывод Get-ChildItem в мой make-файл.

1 Ответ

0 голосов
/ 16 октября 2018

, если вы используете Cmakelists для создания вашей библиотеки / exe, вы можете использовать file (), как показано ниже:

file(GLOB your_src "relativePath/*.h" "relativePath/*.cpp") add_executable(your_exe ${your_src})

, но, кажется, не рекомендуется

GLOB сгенерирует список всех файлов, которые соответствуют выражениям globbing, и сохранит его в переменной.Выражения Globbing похожи на регулярные выражения, но намного проще.Если для выражения указан флаг RELATIVE, результаты будут возвращены как относительный путь к указанному пути.( Мы не рекомендуем использовать GLOB для сбора списка исходных файлов из дерева исходных текстов . Если файл CMakeLists.txt не изменяется при добавлении или удалении источника, то сгенерированная система сборки не может знать, когда запрашивать CMakeвосстановить.) источник: https://cmake.org/cmake/help/v3.0/command/file.html#file

...