完全披露:这是一个学校项目。该项目是在 C++ 中。他们通常希望我们使用他们的实验室计算机,这些计算机是 UNIX 系统,这意味着 makefile 在实验室 comps 上运行良好。但是,就像大多数实验室组合一样,它们都是垃圾。我已经因为他们的胡说八道而失去了不止一个项目。但是,那既不存在也不存在。
正如我所说,我有这个 UNIX 生成文件。我不关心编译指令;我会让 msbuild 处理它。我真正关心的是 makefile 末尾的测试过程。这些是我的项目必须通过的测试(使用另一个 .cpp 文件)才能对其进行评分。现在,我想在 vs 中做这个项目,但我不确定如何将 UNIX makefile 中的指令转换为 msbuild 可以理解的指令。有没有办法将它添加到vs中的xml文件中?我应该使用构建后命令行选项来运行这些测试吗?我最好的选择是什么?我在下面的 makefile 中包含了相关代码。我知道我可以从命令行单独运行每个测试,但这会非常耗时。任何建议等,将不胜感激。谢谢!
请注意,我删除了其他文件的编译说明,因为它们(我认为)与我的问题无关。 代码:
test:
rm -f test_results
ListTemplateTest && \
(echo "ListTemplateTest OK" >> test_results) || \
(echo "ListTemplateTest Failed" >> test_results) && \
HashTableTemplateTest test1 && \
(echo "HashTableTemplateTest test1 OK" >> test_results) || \
(echo "HashTableTemplateTest test1 Failed" >> test_results) && \
HashTableTemplateTest test2 && \
(echo "HashTableTemplateTest test2 OK" >> test_results) || \
(echo "HashTableTemplateTest test2 Failed" >> test_results) && \
HashTableTemplateTest test3 && \
(echo "HashTableTemplateTest test3 OK" >> test_results) || \
(echo "HashTableTemplateTest test3 Failed" >> test_results) && \
HashTableTemplateTest test4 && \
(echo "HashTableTemplateTest test4 OK" >> test_results) || \
(echo "HashTableTemplateTest test4 Failed" >> test_results) && \
HashTableTemplateTest test5 && \
(echo "HashTableTemplateTest test5 OK" >> test_results) || \
(echo "HashTableTemplateTest test5 Failed" >> test_results) && \
HashTableTemplateTest test6 && \
(echo "HashTableTemplateTest test6 OK" >> test_results) || \
(echo "HashTableTemplateTest test6 Failed" >> test_results) && \
HashTableVoidTest test1 && \
(echo "HashTableVoidTest test1 OK" >> test_results) || \
(echo "HashTableVoidTest test1 Failed" >> test_results) && \
HashTableVoidTest test2 && \
(echo "HashTableVoidTest test2 OK" >> test_results) || \
(echo "HashTableVoidTest test2 Failed" >> test_results) && \
HashTableVoidTest test3 && \
(echo "HashTableVoidTest test3 OK" >> test_results) || \
(echo "HashTableVoidTest test3 Failed" >> test_results) && \
HashTableVoidTest test4 && \
(echo "HashTableVoidTest test4 OK" >> test_results) || \
(echo "HashTableVoidTest test4 Failed" >> test_results) && \
HashTableVoidTest test5 && \
(echo "HashTableVoidTest test5 OK" >> test_results) || \
(echo "HashTableVoidTest test5 Failed" >> test_results) && \
HashTableVoidTest test6 && \
(echo "HashTableVoidTest test6 OK" >> test_results) || \
(echo "HashTableVoidTest test6 Failed" >> test_results) && \
(wcVoid greetings.txt | sort > out1) && (wcVoidExample greetings.txt | sort > out2) && \
diff out1 out2 && \
(echo "wcVoid greetings.txt OK" >> test_results) || \
(echo "wcVoid greetings.txt Failed" >> test_results) && \
(wcTemplate greetings.txt | sort > out1) && (wcVoidExample greetings.txt | sort > out2) && \
diff out1 out2 && \
(echo "wcTemplate greetings.txt OK" >> test_results) || \
(echo "wcTemplate greetings.txt Failed" >> test_results) && \
echo && \
echo ------ Test Results ----- && \
cat test_results
清洁: rm -f core *.o HashTableTemplateTest HashTableVoidTest ListTemplateTest\ wcVoid wcTemplate out1 out2 test_results
最佳答案
首先,将其更改为DOS批处理文件。
test:
del /Q /F test_results
ListTemplateTest
if NOT ERRORLEVEL 1
echo "ListTemplateTest OK" >> test_results
if ERRORLEVEL 1
echo "ListTemplateTest Failed" >> test_results
HashTableTemplateTest test1
if NOT ERRORLEVEL 1
echo "HashTableTemplateTest test1 OK" >> test_results
if ERRORLEVEL 1
echo "HashTableTemplateTest test1 Failed" >> test_results
etc ...
现在,在 Visual Studio 中
- 右键单击项目名称
- 从菜单中选择“属性”。
- 在属性树中选择
- 配置属性
- 构建事件
- 构建后事件
- 构建后事件
- 构建事件
- 配置属性
- 将您的批处理文件作为“命令行”
应该这样做。
关于c++ - 将 UNIX makefile 测试参数转换为 msbuild for vs2010, C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5447371/