From 9be901392ae6a13ebe2590e1d1c61adf4f0d7172 Mon Sep 17 00:00:00 2001 From: Steven Knight Date: Sun, 22 Feb 2009 08:17:49 +0000 Subject: Set IncludeSearchPath and PreprocessorDefinitions in the generation project files for Visual Studio 8.0. (Allan Erskine) --- QMTest/TestSConsMSVS.py | 8 +++-- src/CHANGES.txt | 5 +++ src/engine/SCons/Tool/msvs.py | 7 ++-- test/Fortran/link-with-cxx.py | 3 +- test/MSVS/vs-8.0-clean.py | 4 ++- test/Program/no-source.py | 82 +++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 102 insertions(+), 7 deletions(-) create mode 100644 test/Program/no-source.py diff --git a/QMTest/TestSConsMSVS.py b/QMTest/TestSConsMSVS.py index 8a85b3f..f26510b 100644 --- a/QMTest/TestSConsMSVS.py +++ b/QMTest/TestSConsMSVS.py @@ -478,8 +478,8 @@ expected_vcprojfile_8_0 = """\ \t\t\t\tReBuildCommandLine="echo Starting SCons && "" -c "" -C "" -f SConstruct "Test.exe"" \t\t\t\tCleanCommandLine="echo Starting SCons && "" -c "" -C "" -f SConstruct -c "Test.exe"" \t\t\t\tOutput="Test.exe" -\t\t\t\tPreprocessorDefinitions="" -\t\t\t\tIncludeSearchPath="" +\t\t\t\tPreprocessorDefinitions="DEF1;DEF2" +\t\t\t\tIncludeSearchPath="inc1;inc2" \t\t\t\tForcedIncludes="" \t\t\t\tAssemblySearchPath="" \t\t\t\tForcedUsingAssemblies="" @@ -538,7 +538,9 @@ expected_vcprojfile_8_0 = """\ """ SConscript_contents_8_0 = """\ -env=Environment(platform='win32', tools=['msvs'], MSVS_VERSION='8.0') +env=Environment(platform='win32', tools=['msvs'], MSVS_VERSION='8.0', + CPPDEFINES=['DEF1', 'DEF2'], + CPPPATH=['inc1', 'inc2']) testsrc = ['test1.cpp', 'test2.cpp'] testincs = ['sdk.h'] diff --git a/src/CHANGES.txt b/src/CHANGES.txt index cb7fe8c..de5cce8 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -27,6 +27,11 @@ RELEASE X.X.X - XXX - Fix generation of Visual Studio 8 project files on x64 platforms. + From Allan Erskine: + + - Set IncludeSearchPath and PreprocessorDefinitions in generated + Visual Studio 8 project files, to help IntelliSense work. + From Steven Knight: - Fix the error message when use of a non-existent drive on Windows diff --git a/src/engine/SCons/Tool/msvs.py b/src/engine/SCons/Tool/msvs.py index 4d40d8c..e0f31dd 100644 --- a/src/engine/SCons/Tool/msvs.py +++ b/src/engine/SCons/Tool/msvs.py @@ -595,8 +595,8 @@ V8DSPConfiguration = """\ \t\t\t\tReBuildCommandLine="%(rebuildcmd)s" \t\t\t\tCleanCommandLine="%(cleancmd)s" \t\t\t\tOutput="%(runfile)s" -\t\t\t\tPreprocessorDefinitions="" -\t\t\t\tIncludeSearchPath="" +\t\t\t\tPreprocessorDefinitions="%(preprocdefs)s" +\t\t\t\tIncludeSearchPath="%(includepath)s" \t\t\t\tForcedIncludes="" \t\t\t\tAssemblySearchPath="" \t\t\t\tForcedUsingAssemblies="" @@ -686,6 +686,9 @@ class _GenerateV7DSP(_DSPGenerator): rebuildcmd = xmlify(starting + self.env.subst('$MSVSREBUILDCOM', 1) + cmdargs) cleancmd = xmlify(starting + self.env.subst('$MSVSCLEANCOM', 1) + cmdargs) + preprocdefs = xmlify(';'.join(self.env.get('CPPDEFINES', []))) + includepath = xmlify(';'.join(self.env.get('CPPPATH', []))) + if not env_has_buildtarget: del self.env['MSVSBUILDTARGET'] diff --git a/test/Fortran/link-with-cxx.py b/test/Fortran/link-with-cxx.py index a29558e..8d05c5c 100644 --- a/test/Fortran/link-with-cxx.py +++ b/test/Fortran/link-with-cxx.py @@ -70,7 +70,8 @@ def copier(target, source, env): s = str(source[0]) t = str(target[0]) open(t, 'wb').write(open(s, 'rb').read()) -env = Environment(CXX = r'%(_python_)s test_linker.py', +env = Environment(tools = ['gcc', 'gnulink', 'fortran'], + CXX = r'%(_python_)s test_linker.py', CXXCOM = Action(copier), SMARTLINK = SCons.Tool.link.smart_link, LINK = r'$SMARTLINK', diff --git a/test/MSVS/vs-8.0-clean.py b/test/MSVS/vs-8.0-clean.py index d8a1d6f..f17c605 100644 --- a/test/MSVS/vs-8.0-clean.py +++ b/test/MSVS/vs-8.0-clean.py @@ -44,7 +44,9 @@ expected_vcprojfile = TestSConsMSVS.expected_vcprojfile_8_0 test.write('SConstruct', """\ -env=Environment(platform='win32', tools=['msvs'], MSVS_VERSION='8.0') +env=Environment(platform='win32', tools=['msvs'], MSVS_VERSION='8.0', + CPPDEFINES=['DEF1', 'DEF2'], + CPPPATH=['inc1', 'inc2']) testsrc = ['test1.cpp', 'test2.cpp'] testincs = ['sdk.h'] diff --git a/test/Program/no-source.py b/test/Program/no-source.py new file mode 100644 index 0000000..cf12403 --- /dev/null +++ b/test/Program/no-source.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python +# +# __COPYRIGHT__ +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +""" +XXX Put a description of the test here. +""" + +import TestSCons + +test = TestSCons.TestSCons() + +test.write('SConstruct', """ +env = Environment() +env.Library('main', 'main.c') +env.Library('one', 'one.c') +env.Library('two', 'two.c') +env.Program('prog', [], LIBS=['main', 'one', 'two'], LIBPATH=['.']) +""") + +test.write('main.c', """\ +#include +#include +extern void one(void); +extern void two(void); +int +main(int argc, char *argv[]) +{ + printf("main.c\\n"); + one(); + two(); + exit (0); +} +""") + +test.write('one.c', """\ +#include +#include +void +one(void) +{ + printf("one.c\\n"); +} +""") + +test.write('two.c', """\ +#include +#include +void +two(void) +{ + printf("two.c\\n"); +} +""") + +test.run(arguments = '.') + +test.run(program=test.workpath('prog'), stdout="main.c\none.c\ntwo.c\n") + +test.pass_test() -- cgit v0.12