2

今天是个好日子,

我正在尝试执行以下操作:

1)创建便携版微软Visual Studio(vs2010 sp1)+平台SDK(winsdk 7.0a)。
2) 将这些文件放到机器上,在项目上运行 cmake 并构建项目
我假设机器已将 .net 框架 4.0、VS 2010 win32/x64 可再发行组件安装到默认位置。

VS 2010 文件:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC
我把它们放到d:\distr\msvc100sp1目录下。

WinSDK 文件:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A
我把它们放到d:\distr\WinSDK\7.0a目录下

我在做任何事情之前运行这个脚本 - 如果调用了 vcvars(在本例中为 amd64),它会重新创建环境:

@set NV_MSVC100INSTALLDIR=d:\distr\msvc100sp1
@set NV_WINSDK_70A=d:\distr\WinSDK\7.0a

@set CommandPromptType=Native
@set INCLUDE=%NV_MSVC100INSTALLDIR%\VC\INCLUDE;%NV_MSVC100INSTALLDIR%\VC\ATLMFC\INCLUDE;%NV_WINSDK_70A%\include;
@set LIB=%NV_MSVC100INSTALLDIR%\VC\LIB\amd64;%NV_MSVC100INSTALLDIR%\VC\ATLMFC\LIB\amd64;%NV_WINSDK_70A%\lib\x64;
@set LIBPATH=%NV_MSVC100INSTALLDIR%\VC\LIB\amd64;%NV_MSVC100INSTALLDIR%\VC\ATLMFC\LIB\amd64;
@set PATH=%NV_MSVC100INSTALLDIR%\VC\bin\amd64;%NV_MSVC100INSTALLDIR%\VC\VCPackages;%NV_MSVC100INSTALLDIR%\Common7\IDE;%NV_MSVC100INSTALLDIR%\Common7\Tools;%NV_WINSDK_70A%\bin\NETFX 4.0 Tools\x64;%NV_WINSDK_70A%\bin\x64;%NV_WINSDK_70A%\bin;%PATH%
@set Platform=x64
@set VCINSTALLDIR=%NV_MSVC100INSTALLDIR%\VC\
@set VSINSTALLDIR=%NV_MSVC100INSTALLDIR%\
@set WindowsSdkDir=%NV_WINSDK_70A%\
@set PROCESSOR_ARCHITECTURE=AMD64
@set VS100COMNTOOLS=%NV_MSVC100INSTALLDIR%\Common7\Tools

::framework

@set Framework35Version=v3.5
@set FrameworkDir=C:\Windows\Microsoft.NET\Framework64
@set FrameworkDIR64=C:\Windows\Microsoft.NET\Framework64
@set FrameworkVersion=v4.0.30319
@set FrameworkVersion64=v4.0.30319

@set NV_FRAMEWORK_INSTALL_DIR=%FrameworkDIR64%\%FrameworkVersion64%

@set LIBPATH=%NV_FRAMEWORK_INSTALL_DIR%;%NV_FRAMEWORK_INSTALL_DIR%\..\v3.5;%LIBPATH%
@set PATH=%NV_FRAMEWORK_INSTALL_DIR%;%NV_FRAMEWORK_INSTALL_DIR%\..\v3.5;%PATH%

但是运行 devenv(它在上面脚本之后的路径上)我收到了这个错误:

Cannot find one or more components. Please reinstall the application.

我认为 cmake 可以弄清楚如何处理编译器,但它抱怨编译器版本检查:

CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineCompilerId.cmake:446 (execute_process):
  execute_process given COMMAND argument with no value.
Call Stack (most recent call first):
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineCompilerId.cmake:48 (CMAKE_DETERMINE_COMPILER_ID_VENDOR)
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineCCompiler.cmake:131 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:9 (project)


The C compiler identification is unknown
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineCompilerId.cmake:446 (execute_process):
  execute_process given COMMAND argument with no value.
    Call Stack (most recent call first):
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineCompilerId.cmake:48 (CMAKE_DETERMINE_COMPILER_ID_VENDOR)
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineCXXCompiler.cmake:127 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:9 (project)

The CXX compiler identification is unknown
Configuring incomplete, errors occurred!
See also "d:/vs2010_test/build/CMakeFiles/CMakeOutput.log".
See also "d:/vs2010_test/build/CMakeFiles/CMakeError.log".

输出文件中存在关于缺少组件的相同错误。

想要的东西甚至可能吗?可能缺少哪些组件?
我想要的是执行我想要的,然后自动清理机器,即使它需要更改注册表项。

4

1 回答 1

1

感谢评论,我发现msbuild和devenv都要求肯定有很多系统文件/注册表项。对我来说,尝试满足这些需求是不值得的,我会尝试寻找其他方法来完成我的构建任务。

于 2014-05-30T19:41:48.273 回答