如何配置CMake以使VS解决方案使用特定的构建命令行?

时间:2011-10-23 12:19:55

标签: visual-studio-2010 cmake

我正在尝试设置CMake为我们的项目生成MSVC(2010)解决方案,并且需要配置项目以便他们使用我们的特定构建系统而不是使用默认命令行进行编译。

这是VS2008的项目文件(我们使用另一个我想要远离的脚本生成):

        <Tool
            Name="VCNMakeTool"
            BuildCommandLine="../bam.bat -j %%NUMBER_OF_PROCESSORS%%"
            ReBuildCommandLine="../bam.bat -j %%NUMBER_OF_PROCESSORS%% -c  &amp;&amp; ../bam.bat -j %%NUMBER_OF_PROCESSORS%%"
            CleanCommandLine="../bam.bat -j %%NUMBER_OF_PROCESSORS%% -c "
            Output="..\..\..\common\win32\container.exe"
            PreprocessorDefinitions=""
            IncludeSearchPath=""
            ForcedIncludes=""
            AssemblySearchPath=""
            ForcedUsingAssemblies=""
            CompileAsManaged=""
        />

它基本上是我希望能够从我的cmake配置中指定的三个 CommandLine 设置。

我在文档中找到了 build_command 命令,但从描述中听起来它确实与我想要的相反,即将它生成的命令行写入变量而不是取一个字符串并将命令行设置为。

似乎有点相关的是CMake中的交叉编译功能,但我确定这是否是一种很好的方法。

基本上我只是希望VS在我进行构建时运行批处理文件,然后将结果解析回来以获得很好的错误消息等。

2 个答案:

答案 0 :(得分:1)

也许您需要编写自己的CMake工具链。您可以在CMAKE_ROOT / share / Modules / Platform或in CMake documentation中看到工具链的示例,但我不确定cmake是否可以为自定义编译器生成MSVC解决方案。

答案 1 :(得分:1)

在我看来,你想要的只是一个&#34;自定义命令&#34;用CMake的说法。

类似的东西:

set(custom_exe "${CMAKE_CURRENT_BINARY_DIR}/common/win32/container.exe")

add_custom_command(OUTPUT ${custom_exe}
  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bam.bat -j $ENV{NUMBER_OF_PROCESSORS}
  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bam.bat
)

add_custom_target(bam ALL DEPENDS ${custom_exe})