我是使用makefiles并努力构建使用.exe
的文件扩展的可执行文件的新手。
当前,这是我所拥有的,无法构建可执行文件:
output: main.o user.o item.o transaction.o bid.o
g++ main.o user.o item.o transaction.o bid.o -o output.exe
main.o: main.cpp
g++ -c main.cpp
user.o: user.cpp user.h
g++ -c -std=c++11 user.cpp
item.o: item.cpp item.h
g++ -c -std=c++11 item.cpp
transaction.o: transaction.cpp transaction.h
g++ -c -std=c++11 transaction.cpp
bid.o: bid.cpp bid.h
g++ -c -std=c++11 bid.cpp
clean:
rm *.o output
我想制作一个.EXE文件,因为我正在创建一个批处理脚本来对程序进行自动测试。当我创建批处理脚本时,我会在runTest.bat
文件中尝试以下内容:
cd ../../
make
./output current_User_Accounts_File.uaf available_Items_File.ai daily_Transaction_File.tra < Test_Cases/login/login1.in
pause
问题是,我会定期使用bash来执行我的程序,然后键入./
,然后键入可执行文件。使用批处理文件,它无法识别./
,这就是为什么我想尝试构建.exe
文件的原因。任何帮助或建议将不胜感激。
有更好的策略来解决这个问题吗?我必须自动化多个测试案例,其中我要进行输入。当采用创建.sh脚本的方法时,我会遇到其他冲突。为C 进行自动测试脚本的建议方法是什么?
在这里:
g++ main.o user.o item.o transaction.o bid.o -o
-o选项期望输出文件的名称,在这种情况下为可执行文件。所以:
g++ main.o user.o item.o transaction.o bid.o -o something
或:
g++ main.o user.o item.o transaction.o bid.o -o something.exe
这是纯GCC/makefile/bash语法,与C 语言无关,因此我要删除该标签。
Windows cmd.exe和大多数Windows程序不会自动将前向斜线转换为后斜线。将./output ...
更改为output.exe
,它应该可以正常工作。.
无论如何都会是多余的。