如何使用与MSVS中相同的设置从cmd运行cl.exe?

时间:2015-01-20 02:38:42

标签: c++ visual-studio-2010 cl

我在MSVS 2010 Express中有一个c ++项目。我一直在计划编写几个单元测试来验证这个项目。现在他们遵循以下几点:

#include "header.h" //Header is the header for the source I want to test

void testSomeFunction()
{
    //Call function (from external src, prototype in header.h)
    //Save output to file
}

int main()
{
    testSomeFunction();
    return 0;
}

我在项目之外创建这些源文件,因为我希望能够将每个源文件作为单独的可执行文件运行,但是我无法让Microsoft链接器链接它们。

到目前为止这是我的问题(CMD输出):

cl ut_Converter.cpp Converter.obj

ut_Converter.cpp
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\xlocale(323) : warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc

Microsoft (R) Incremental Linker Version 10.00.40219.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:ut_Converter.exe
ut_Converter.obj
Converter.obj
Converter.obj : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in ut_Converter.obj
Converter.obj : fatal error LNK1313: pure module detected; cannot link with ijw/native modules

我从未真正使用过Microsoft产品,我熟悉使用GNU工具GCC和make,但我必须使用Microsoft工具,我不知道它们是如何工作的。

也许我会以愚蠢的方式构建这些测试,但这是我现在想到的最佳方式。

这就是我想要做的事情:

  1. 将项目中的源文件编译为目标文件
  2. 将我的测试文件编译为目标文件
  3. 将测试对象文件与相应的项目对象文件链接以生成测试可执行文件
  4. 我该怎么做呢? (我猜我需要设置一些设置以使所有内容兼容,但我不知道它们是什么或者我将如何设置它们)

    额外:我知道它提到了调试级别,但我愿意打赌会有其他不兼容的设置。有没有办法找出程序中的设置,以便在运行时将它们传递给cl.exe?

    编辑:当我说命令提示符时,我的意思是Visual Studio附带的所有环境变量设置。

1 个答案:

答案 0 :(得分:2)

您是否尝试过使用程序/ Microsoft Visual ... / ...工具/ ...命令提示符,并从具有环境变量设置的dos控制台窗口运行?