我正在寻找一种将完整的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中。
答案 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