2017-01-13 1 views
0

내 목표는 내 모든 SConscript에 의해 생성 된 모든 vcxproject에 대해 하나의 sln 파일을 갖는 것입니다. 내 SConstructMSVSSolution 및 MSVSProject를 사용하는 방법

프로젝트의 루트에 SLN 파일을 생성을 담당 :

vcxprojList = [] 
for script in getSConscript(): 
    #SConscript imports and appends vcxproject in vcxprojList 
    SConscript(str(script).strip(), exports='envService vcxprojList', variant_dir=myVariantDir, duplicate=0) 

Alias('msvs', env.MSVSSolution(target = 'faa_mxA' + env['MSVSSOLUTIONSUFFIX'], 
              projects = vcxprojList, 
              variant = 'Debug')) 

내 SConscript 2 vcxproject를 만들고, 참조 :

prj1 = env.MSVSProject(target = env.libName() + env['MSVSPROJECTSUFFIX'], 
            srcs = sourcesLib, 
            incs = [''], 
            localincs = headerFiles, 
            resources = [''], 
            misc = [''], 
            buildtarget = lib, 
            variant = 'Debug', 
            auto_build_solution=0) 


prj2 = Default(Alias('msvs',env.MSVSProject(target = 'FlatGuiSpeechController' + env['MSVSPROJECTSUFFIX'], 
            srcs = ['main.cpp'], 
            incs = [''], 
            localincs = [''], 
            resources = ['main.rc'], 
            misc = [''], 
            buildtarget = program, 
            variant = 'Debug', 
            auto_build_solution=0))) 


print 'prj1 : ' + str(prj1) 
print 'prj2 : ' + str(prj2) 

Default(Alias('msvc', prj1)) 

vcxprojList.append(prj1[0]) 
vcxprojList.append(prj2) 
나는 거의 행복

하지만, SLN을 파일이 올바르지 않으면 src 디렉토리에있는 파일을 사용할 때 variant dir의 vcxproject를 사용하려고 시도합니다.

Microsoft Visual Studio Solution File, Format Version 11.00 
# Visual Studio 2010 
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsr_sra_src_flatGui-debug.vcxproj", "build\debug\sr\sra\src\flatGui\libsr_sra_src_flatGui-debug.vcxproj", "{D4E37B2A-A33C-E0A6-3776-346AC39668E2}" 
EndProject 
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "None", "None", "{6ADF97F8-3ACF-6453-D4A6-A4B1070F3754}" 
EndProject 
. 
. 
. 

1 - 아직도 실제 vcxprojects가 src 디렉토리에 있고 변형 dir에 더미 vcxprojects가있는 이유는 아직도 혼란 스럽습니다. sln 파일이 잘못된 vcxproject를 사용하려고 시도합니다. 그것은 MSVSProject가 변형 된 dir과 함께 사용될 수 없기 때문입니까?

2 - 다른 문제가 있습니다. 기본 및 별칭 메커니즘은 MSVSProject에서 의도 한대로 작동하지 않습니다. MSVSProject를 'msvs'대상과 함께 실행하고 싶습니다. Default(Alias('msvc', prj1))이 실행되지 않은 상태에서

prj1 : ['libsr_sra_src_flatGui-debug.vcxproj', 'libsr_sra_src_flatGui-debug.vcxproj.filters'] 
prj2 : None 
scons: done reading SConscript files. 
scons: Building targets ... 
_GenerateV10DSP.Parse() 
Adding 'FlatGuiSpeechController - Debug|Win32' to 'sr\sra\src\flatGui\FlatGuiSpeechController.vcxproj' 

prj2 = Default(Alias...)가 빈 대상을 반환 : 내 SConscript 위의 출력을 생성!

내가 뭘 잘못하고 있니?

답변

0

누군가가 내이 같은 질문이 경우, 내가 솔루션을 게시 할 예정 나는 발견

1 - 첫 번째 문제는 variant dirsrc dir 모두 MSVSProject 생성 프로젝트 파일이었다. 내 SConsctruct에서이 문제를 해결하려면 다음 해결 방법을했다 :

vcxprojList = [] 
for script in getSConscript(): 
    if 'msvs' in COMMAND_LINE_TARGETS: 
     SConscript(str(script).strip(), exports='envService vcxprojList', duplicate=0) 
    else: 
     variantDir = os.path.join(envService.get_envWin32()['VARIANTDIRROOT'], envService.get_envWin32()['BUILDMODE'], os.path.dirname(script)[2:]) 
     SConscript(str(script).strip(), exports='envService vcxprojList', variant_dir=variantDir, duplicate=0) 

Alias('msvs', envService.get_envWin32().MSVSSolution(target = 'faa_mxA' + envService.get_envWin32()['MSVSSOLUTIONSUFFIX'], 
                projects = vcxprojList, 
                variant = 'Debug')) 

당신이 SCons는 MSVC를 입력하면

이 더 변형 디렉토리가 SConscript에 주어지지하고, MSVS 프로젝트 파일이 생성 된 경우에만 SRC 디렉토리.

2 - 다른 문제는 DefaultAlias의 오용이었습니다. 나는 scons msvs을 입력 할 때 내가 원하는 것을 깨달았다. Alias이면 충분하다.

라이브러리를 작성

TGT = env.buildLibrary (env.libName(), 글롭 ('. * CPP'))

################################ Visual Studio #################################### 
if 'msvs' in COMMAND_LINE_TARGETS: 
     prj1 = env.MSVSProject(target = env.libName() + env['MSVSPROJECTSUFFIX'], 
           srcs = env.getBaseName(Glob('*.cpp')), 
           incs = [''], 
           localincs = env.getBaseName(Glob('*.h')), 
           resources = [''], 
           misc = [''], 
           buildtarget = tgt, 
           variant = 'Debug', 
           auto_build_solution=0) 

     env.Alias('msvs', prj1) 
     vcxprojList.append(prj1[0]) 

등함으로써 해결할 수 : 내 SConscript에 그런 일을했다

관련 문제