多个项目输出类型:编译为EXE和LIB

时间:2013-07-20 02:18:30

标签: c++ visual-studio-2012 project-properties

我有一个构建为EXE的C ++项目。但是,我还需要将项目构建为静态库(.LIB文件)。现在为了获得完整的构建,我需要以一种格式构建它,然后打开项目属性并在General>下面。项目默认值>配置类型选择其他格式,接受和重新编译。这真是一件麻烦事。有没有办法指定这两种类型?我没有在MSDN上看到过这方面的任何内容。

我正在使用Visual Studio 2012.

3 个答案:

答案 0 :(得分:2)

解决问题的一种常见(尤其是理智的)方法是拥有一个包含两个项目的解决方案。第一个项目应该是包含大部分代码的库(静态或动态链接,无关紧要)。第二个项目应该是一个可执行文件,它引用您在第一个项目中创建的库。

以这种方式执行,您的解决方案的单个版本将生成可执行文件和库。

答案 1 :(得分:1)

创建两个项目,将同一组源文件添加到两个项目中。

答案 2 :(得分:0)

这是一个非常老的线程,但为后代考虑:如果您的项目具有一个极简的main.cpp,则可以从生成的整个.obj中构建一个库,main.obj除外。 一种典型的方法是在预链接事件上添加此构建:

<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
[...]
  <PreLinkEvent>
    <Command>@ECHO ON
    "lib.exe" /NOLOGO /OUT:"$(OutDir)$(ProjectName).lib" "$(IntermediateOutputPath)*.obj"
    "lib.exe" /NOLOGO "$(OutDir)$(ProjectName).lib" /REMOVE:"$(IntermediateOutputPath)main.obj"</Command>
  </PreLinkEvent>
</ItemDefinitionGroup>

它正在与Visual Studio 2010和2019一起使用(未测试中间版本)。