Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 如何配置CMake使VS解决方案使用特定的构建命令行?_Visual Studio 2010_Cmake - Fatal编程技术网

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

Visual studio 2010 如何配置CMake使VS解决方案使用特定的构建命令行?,visual-studio-2010,cmake,Visual Studio 2010,Cmake,我正在尝试设置CMake为我们的项目生成MSVC(2010)解决方案,并且需要配置项目,以便它们使用我们的特定构建系统,而不是使用默认命令行进行编译 以下是VS2008的项目文件的外观(我们使用另一个我不想使用的脚本生成): 这基本上是我希望能够从我的cmake配置中指定的三个命令行设置 我在文档中找到了build_命令命令,但从描述来看,它似乎与我想要的相反,即将生成的命令行写入变量,而不是字符串,并将命令行设置为该变量 CMake中的交叉编译功能似乎有点相关,但我确信这是否是一个好方法

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

以下是VS2008的项目文件的外观(我们使用另一个我不想使用的脚本生成):


这基本上是我希望能够从我的cmake配置中指定的三个命令行设置

我在文档中找到了build_命令命令,但从描述来看,它似乎与我想要的相反,即将生成的命令行写入变量,而不是字符串,并将命令行设置为该变量

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


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

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

在我看来,您想要的只是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})

谢谢,是的,这就是我上面提到的“交叉编译特性”的意思。也许这是做我想做的事情的最好的/唯一的方法。谢谢,我能够用它取得一些成功,所以我将把它标记为答案。
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})