c++ - 将 UNIX makefile 测试参数转换为 msbuild for vs2010, C++

标签 c++ visual-studio-2010 makefile

完全披露:这是一个学校项目。该项目是在 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/

相关文章:

c++ - 您如何称呼 2 个 .c 文件之间的这种关系?

c++ - 由于链式前缀,Visual Studio 2017 Linux Makefile 项目无法构建

c - 未定义对 `ceilf' 的引用

c++ - arduino,c++的简单位图旋转

c++ - 在 C++ 中替换不区分大小写的子字符串

visual-studio-2010 - ReSharper 当前行突出显示变回默认值

c++ - 为什么 Visual Studio 2010 会创建预编译头文件,即使我不要求它?

c++ - 有没有办法将 lambda 的签名推断为 mpl 序列?

c++ - 嵌套类声明 : template vs non-template outer class

visual-studio-2010 - MSBuild 可以从生成的 SetParameters.xml 中排除 "Hidden"Web Deploy 参数吗?