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



我试图设置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="......commonwin32container.exe"
            PreprocessorDefinitions=""
            IncludeSearchPath=""
            ForcedIncludes=""
            AssemblySearchPath=""
            ForcedUsingAssemblies=""
            CompileAsManaged=""
        />

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

我在文档中找到了build_command命令,但从描述中听起来像是与我想要的相反,即将命令行生成为变量而不是接受字符串并将命令行设置为变量。

似乎有点相关的是在CMake的交叉编译功能,但我敢肯定,如果这是一个很好的方法来做到这一点。

基本上,我只是想VS运行一个批处理文件,当我做一个构建,然后解析结果返回得到很好的错误信息等

在我看来,你想要的只是一个"自定义命令"在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})

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

最新更新