我试图设置CMake为我们的项目生成MSVC(2010)解决方案,并且需要配置项目,以便它们使用我们特定的构建系统,而不是使用默认命令行编译。
下面是VS2008的项目文件(我们使用另一个我想摆脱的脚本生成):
<Tool
Name="VCNMakeTool"
BuildCommandLine="../bam.bat -j %%NUMBER_OF_PROCESSORS%%"
ReBuildCommandLine="../bam.bat -j %%NUMBER_OF_PROCESSORS%% -c && ../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解决方案。