使用Powershell命令将cpp文件的文件夹编译为GNU的g ++

时间:2018-10-16 02:04:17

标签: c++ powershell compilation gnu

我正在寻找一种将完整的c ++命令文件夹传送到g ++的方法,这样我就不必在g++命令中键入25个文件名。

我正在使用Powershell,并认为我可以以某种方式使用Get-childItem -Name -Path *.cpp的管道。这样,整个文件夹就可以立即编译而不会丢失文件或拼写错误的文件名,而且它的模块化程度足以使我只需使用Set-Location folderpath即可粘贴之前无需编写新的makefile每次我制作一个带有大量链接文件的链接程序时。

这是可行/可行的还是应该坚持使用Makefile?

例如:
我有一个从如何编程书中“借用”的电梯模拟,该书有12个头文件,12个类保存到单独的cpp文件中,以及在C:\Users\Noah\Desktop\ripsfromthebook\ch09\elevator中有1个主要执行cpp。

假设存在程序正常运行所需的一切,并且如果您将每个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的输出复制/粘贴到我的makefile中。

1 个答案:

答案 0 :(得分:0)

如果您使用Cmakelists构建库/ exe,则可以使用file()如下:

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

但似乎不建议

  

GLOB将生成所有与通配符表达式匹配的文件的列表,并将其存储到变量中。通配表达式与正则表达式相似,但更为简单。如果为表达式指定了RELATIVE标志,则结果将作为相对于给定路径的相对路径返回。 (我们不建议您使用GLOB从您的源代码树中收集源文件列表。。如果添加或删除源文件时CMakeLists.txt文件没有更改,则生成的构建系统将无法确定何时询问CMake重新生成。)   来源:https://cmake.org/cmake/help/v3.0/command/file.html#file