Сборка с помощью Build.exe и dirs / sources и Visual Studio 2010/11 - PullRequest
2 голосов
/ 27 сентября 2011
  1. Есть ли способ сказать Visual Studio 2010 (или Visual Studio 11 Developer Preview) использовать исходный файл?

  2. Существуют ли какие-либо инструменты для преобразования из nmake / dirs / sources в MSBuild?

Я действительно хочу использовать инструменты анализа кода Visual Studio 11 Preview Preview для очень старого решения C ++, которое в настоящее время даже близко не подходит для возможности компиляции в Visual Studio.

Вот пример одного из множества исходных файлов:

!INCLUDE $(INETROOT)\build\paths.all
!INCLUDE $(INETROOT)\build\sources.all

TARGETNAME=CSDWCtlg
TARGETTYPE=DYNLINK

DLLENTRY=DllMainCRTStartupCustom
DLLDEF=
USE_NATIVE_EH=1
NO_NTDLL=1

NTTARGETFILE0=$(EXPORTED_FILES)

INCLUDES=   \
    $(INCLUDES); \
    $(SDK_INC_PATH); \
    $(ATL_INC_PATH); \
    $(CSSTORAGE)\inc; \
    $(CSSTORAGE)\util\inc; \
    $(CSSTORAGE)\dbg; \
    $(CSSTORAGE)\msg; \
    $(CSSTORAGE)\intf\idl; \
    $(CSSTORAGE)\ctlg; \
    $(CSSTORAGE)\provider; \
    $(CSSTORAGE)\dsproviders\inc\; \
    $(CSCOMMON)\rockall4\Build\Rockall\Include; \
    $(CSCOMMON)\rockall4\Code\Rockall\Interface; \
    $(CSCOMMON)\kbase; \
    $(CSCOMMON)\inc; \

# goes to both RC compiler and C compiler

# RUN_WPP=$(SOURCES)  -func:{LEVEL=Error}ErrorTrace(ERR,MSG,...) -func:{LEVEL=Debug}DebugTrace(DBG,MSG,...)  
C_DEFINES=$(C_DEFINES) /D_UNICODE /DUNICODE /DPROJ_METABASE /DCSTRACE_CSDWCTLG /D_CTLG_DIAGNOSTIC#1 

USER_C_FLAGS=$(USER_C_FLAGS) -D_CTLG_DIAGNOSTIC=1 -GR -D_WIN32_WINNT=0x0500 -DOLEDBVER=0x0250 

# check for 64-bit compatiblitly
!if "$(PROCESSOR_ARCHITECTURE)"=="x86"
USER_C_FLAGS = $(USER_C_FLAGS) /Wp64
!endif

# The line below includes the common build flags.
# It modifies the USER_C_FLAGS variable by appending the 'project' level flags.
# Be sure to use the syntax USER_C_FLAGS=$(USER_C_FLAGS) 'flags' if you use USER_C_FLAGS after this include.

!INCLUDE $(CSSTORAGE)\inc\userFlags$(DCRT).inc
USE_MSVCRT=1


PRECOMPILED_CXX=1
PRECOMPILED_INCLUDE=pch.hpp
PRECOMPILED_PCH=pch_hpp.pch
PRECOMPILED_OBJ=pch_hpp.obj

SOURCES=\
     csdwctlg.rc \
     pch.cpp \
         dll.cpp \
     crow.cpp \
     ctlgdump.cpp \
     ctlghandler.cpp \
     ctlgobj.cpp \
     ctlgobjaccess.cpp \
     ctlgobjclsdef.cpp \
     ctlgobjdefs.cpp \
     ctlgobjget.cpp \
     ctlgobjkeydef.cpp \
     ctlgobjmemdef.cpp \
     ctlgobjrel.cpp \
     ctlgobjrow.cpp \
     ctlgobjset.cpp \
     ctlgobjtbl.cpp \
     ctlgobjtbls.cpp \
     ctlgobjtypedef.cpp \
     ctlgobjview.cpp \
     ctlgpersist.cpp \
     ctlgresolve.cpp \
     ctlgresolve2.cpp \
     ctlgpartresolve.cpp \
     ctlgaggrresolve.cpp \
     ctlgfilterresolve.cpp \
     ctlgvalidate.cpp \
     expschema.cpp \
     mbcatalog.cpp \
     mbictlgchg.cpp \
     schemamgr.cpp \
     sqlpathtrans.cpp \

TARGETLIBS= \
    $(DEFAULTLIBS) \
    $(SDK_LIB_PATH)\ole32.lib \
    $(SDK_LIB_PATH)\oleaut32.lib \
    $(SDK_LIB_PATH)\uuid.lib \
    $(SDK_LIB_PATH)\urlmon.lib \
    $(TARGETPATH)\*\CSDWIntf.lib \
    $(TARGETPATH)\*\CSDWUtil.lib \
    $(SDK_LIB_PATH)\msi.lib     \
    $(TARGETPATH)\*\csrockall.lib   \
    $(TARGETPATH)\*\CSDWSrvrDLL.lib \
    $(SDK_LIB_PATH)\Kernel32.lib \
    $(SDK_LIB_PATH)\user32.lib \
    $(SDK_LIB_PATH)\Advapi32.lib \
    $(CRT_LIB_PATH)\oldnames.lib \
    $(SDK_LIB_PATH)\atls$(DCRT).lib \

# For Binplacing
MISCFILES= \
    .\SCHEMA\* \

Любой совет?

ОБНОВЛЕНИЕ: Я нашел nmake2msbuild.exe , который является частью WDK. Он предназначен для разработки драйверов и конвертирует каталоги и источники в проекты MSBuild . Я не уверен, что это сработает для того, что я должен делать (не для водителей), но я собираюсь попробовать.

1 Ответ

0 голосов
/ 30 сентября 2011

Я нашел nmake2msbuild.exe , который является частью WDK. Он предназначен для разработки драйверов и конвертирует каталоги и источники в проекты MSBuild .

Некоторое ручное изменение исходных файлов было необходимо, чтобы инструмент завершил конвертацию. Он не делает все, но помогает добиться цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...