Initial commit
This commit is contained in:
96
.clang-format
Normal file
96
.clang-format
Normal file
@@ -0,0 +1,96 @@
|
||||
Language: Cpp
|
||||
# BasedOnStyle: Google
|
||||
AccessModifierOffset: -2
|
||||
AlignAfterOpenBracket: Align
|
||||
AlignConsecutiveAssignments: true
|
||||
AlignConsecutiveDeclarations: false
|
||||
AlignEscapedNewlinesLeft: false
|
||||
AlignOperands: true
|
||||
AlignTrailingComments: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: true
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: Inline
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
AllowShortLoopsOnASingleLine: true
|
||||
AlwaysBreakAfterDefinitionReturnType: None
|
||||
AlwaysBreakAfterReturnType: TopLevelDefinitions
|
||||
AlwaysBreakBeforeMultilineStrings: true
|
||||
AlwaysBreakTemplateDeclarations: true
|
||||
BinPackArguments: false
|
||||
BinPackParameters: false
|
||||
BreakBeforeBraces : Custom
|
||||
BraceWrapping:
|
||||
AfterClass: false
|
||||
AfterControlStatement: false
|
||||
AfterEnum: false
|
||||
AfterFunction: true
|
||||
AfterNamespace: false
|
||||
AfterObjCDeclaration: false
|
||||
AfterStruct: false
|
||||
AfterUnion: false
|
||||
BeforeCatch: true
|
||||
BeforeElse: true
|
||||
IndentBraces: false
|
||||
BreakBeforeBinaryOperators: None
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializersBeforeComma: false
|
||||
BreakAfterJavaFieldAnnotations: false
|
||||
BreakStringLiterals: true
|
||||
ColumnLimit: 80
|
||||
CommentPragmas: '^ IWYU pragma:'
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
||||
ConstructorInitializerIndentWidth: 4
|
||||
ContinuationIndentWidth: 4
|
||||
Cpp11BracedListStyle: true
|
||||
DerivePointerAlignment: false
|
||||
DisableFormat: false
|
||||
ExperimentalAutoDetectBinPacking: false
|
||||
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
|
||||
IncludeCategories:
|
||||
- Regex: '^<.*\.h>'
|
||||
Priority: 1
|
||||
- Regex: '^<.*'
|
||||
Priority: 2
|
||||
- Regex: '.*'
|
||||
Priority: 3
|
||||
IncludeIsMainRegex: '([-_](test|unittest))?$'
|
||||
IndentCaseLabels: false
|
||||
IndentWidth: 2
|
||||
IndentWrappedFunctionNames: false
|
||||
JavaScriptQuotes: Leave
|
||||
JavaScriptWrapImports: true
|
||||
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||
MacroBlockBegin: ''
|
||||
MacroBlockEnd: ''
|
||||
MaxEmptyLinesToKeep: 1
|
||||
NamespaceIndentation: None
|
||||
ObjCBlockIndentWidth: 2
|
||||
ObjCSpaceAfterProperty: false
|
||||
ObjCSpaceBeforeProtocolList: false
|
||||
PenaltyBreakBeforeFirstCallParameter: 1
|
||||
PenaltyBreakComment: 300
|
||||
PenaltyBreakFirstLessLess: 120
|
||||
PenaltyBreakString: 1000
|
||||
PenaltyExcessCharacter: 1000000
|
||||
PenaltyReturnTypeOnItsOwnLine: 200
|
||||
PointerAlignment: Left
|
||||
ReflowComments: true
|
||||
SortIncludes: true
|
||||
SpaceAfterCStyleCast: true
|
||||
SpaceAfterTemplateKeyword: true
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesBeforeTrailingComments: 2
|
||||
SpacesInAngles: false
|
||||
SpacesInContainerLiterals: false
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
Standard: Cpp11
|
||||
TabWidth: 2
|
||||
UseTab: Never
|
||||
|
||||
|
||||
|
||||
64
.cproject
Normal file
64
.cproject
Normal file
@@ -0,0 +1,64 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||
<cconfiguration id="cdt.managedbuild.config.gnu.cross.exe.release.1891867734">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.cross.exe.release.1891867734" moduleId="org.eclipse.cdt.core.settings" name="Release">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.cross.exe.release.1891867734" name="Release" parent="cdt.managedbuild.config.gnu.cross.exe.release">
|
||||
<folderInfo id="cdt.managedbuild.config.gnu.cross.exe.release.1891867734." name="/" resourcePath="">
|
||||
<toolChain id="cdt.managedbuild.toolchain.gnu.cross.exe.release.1200869658" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.exe.release">
|
||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.704470878" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/>
|
||||
<builder buildPath="${workspace_loc:/scons}/Release" id="cdt.managedbuild.builder.gnu.cross.1496558127" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.builder.gnu.cross"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cross.c.compiler.2041788835" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler">
|
||||
<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.100898372" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>
|
||||
<option id="gnu.c.compiler.option.debugging.level.102916161" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.none" valueType="enumerated"/>
|
||||
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.38314126" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.1483936250" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler">
|
||||
<option id="gnu.cpp.compiler.option.optimization.level.130197279" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
|
||||
<option id="gnu.cpp.compiler.option.debugging.level.822637018" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
|
||||
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1554915344" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cross.c.linker.899242295" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.1567746957" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker">
|
||||
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.787672451" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
</inputType>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cross.archiver.78792473" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cross.assembler.1975717274" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler">
|
||||
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.149268296" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<project id="scons.cdt.managedbuild.target.gnu.cross.exe.320713590" name="Executable" projectType="cdt.managedbuild.target.gnu.cross.exe"/>
|
||||
</storageModule>
|
||||
<storageModule moduleId="scannerConfiguration">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.release.1891867734;cdt.managedbuild.config.gnu.cross.exe.release.1891867734.;cdt.managedbuild.tool.gnu.cross.cpp.compiler.1483936250;cdt.managedbuild.tool.gnu.cpp.compiler.input.1554915344">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.release.1891867734;cdt.managedbuild.config.gnu.cross.exe.release.1891867734.;cdt.managedbuild.tool.gnu.cross.c.compiler.2041788835;cdt.managedbuild.tool.gnu.c.compiler.input.38314126">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
|
||||
</cproject>
|
||||
38
.gitignore
vendored
Normal file
38
.gitignore
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
# Prerequisites
|
||||
*.d
|
||||
|
||||
# Compiled Object files
|
||||
*.slo
|
||||
*.lo
|
||||
*.o
|
||||
*.obj
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Compiled Dynamic libraries
|
||||
*.so
|
||||
*.dylib
|
||||
*.dll
|
||||
|
||||
# Fortran module files
|
||||
*.mod
|
||||
*.smod
|
||||
|
||||
# Compiled Static libraries
|
||||
*.lai
|
||||
*.la
|
||||
*.a
|
||||
*.lib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
|
||||
# scons
|
||||
.sconsign.dblite
|
||||
|
||||
helloworld*
|
||||
env.txt
|
||||
33
.project
Normal file
33
.project
Normal file
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>scons</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.python.pydev.PyDevBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||
<triggers>clean,full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||
<triggers>full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||
<nature>org.eclipse.cdt.core.ccnature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||
<nature>org.python.pydev.pythonNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
5
.pydevproject
Normal file
5
.pydevproject
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?eclipse-pydev version="1.0"?><pydev_project>
|
||||
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
|
||||
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python interpreter</pydev_property>
|
||||
</pydev_project>
|
||||
14
.settings/language.settings.xml
Normal file
14
.settings/language.settings.xml
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<project>
|
||||
<configuration id="cdt.managedbuild.config.gnu.cross.exe.release.1891867734" name="Release">
|
||||
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
|
||||
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
||||
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
|
||||
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
||||
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="-1327539654838326403" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
||||
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
||||
<language-scope id="org.eclipse.cdt.core.g++"/>
|
||||
</provider>
|
||||
</extension>
|
||||
</configuration>
|
||||
</project>
|
||||
@@ -1,2 +1,4 @@
|
||||
# scons-presentation
|
||||
A presentation titled "SCons; A Python-Based Build System"
|
||||
|
||||
A talk titled "SCons; A Python-Based Build System"
|
||||
|
||||
|
||||
BIN
pptx/SCons.pptx
Normal file
BIN
pptx/SCons.pptx
Normal file
Binary file not shown.
124
src/execEx/01/SConstruct
Normal file
124
src/execEx/01/SConstruct
Normal file
@@ -0,0 +1,124 @@
|
||||
|
||||
Help("""
|
||||
|
||||
This is the first scons example. In this example we see a very simple way
|
||||
of calling scons to create an executable
|
||||
|
||||
>> ls
|
||||
main.cpp SConstruct
|
||||
|
||||
>> scons -h (get this help message)
|
||||
>> scons -H (get scons command help)
|
||||
usage: scons [OPTION] [TARGET] ...
|
||||
|
||||
SCons Options:
|
||||
-b, -d, -e, -m, -S, -t, -w, --environment-overrides, --no-keep-going,
|
||||
--no-print-directory, --print-directory, --stop, --touch
|
||||
Ignored for compatibility.
|
||||
-c, --clean, --remove Remove specified targets and dependencies.
|
||||
-C DIR, --directory=DIR Change to DIR before doing anything.
|
||||
--cache-debug=FILE Print CacheDir debug info to FILE.
|
||||
--cache-disable, --no-cache
|
||||
Do not retrieve built targets from CacheDir.
|
||||
--cache-force, --cache-populate
|
||||
Copy already-built targets into the CacheDir.
|
||||
--cache-readonly Do not update CacheDir with built targets.
|
||||
--cache-show Print build actions for files from CacheDir.
|
||||
--config=MODE Controls Configure subsystem: auto, force,
|
||||
cache.
|
||||
-D Search up directory tree for SConstruct,
|
||||
build all Default() targets.
|
||||
--debug=TYPE Print various types of debugging information:
|
||||
count, duplicate, explain, findlibs, includes,
|
||||
memoizer, memory, objects, pdb, prepare,
|
||||
presub, stacktrace, time.
|
||||
--diskcheck=TYPE Enable specific on-disk checks.
|
||||
--duplicate=DUPLICATE Set the preferred duplication methods. Must be
|
||||
one of hard-soft-copy, soft-hard-copy,
|
||||
hard-copy, soft-copy, copy
|
||||
-f FILE, --file=FILE, --makefile=FILE, --sconstruct=FILE
|
||||
Read FILE as the top-level SConstruct file.
|
||||
-h, --help Print defined help message, or this one.
|
||||
-H, --help-options Print this message and exit.
|
||||
-i, --ignore-errors Ignore errors from build actions.
|
||||
-I DIR, --include-dir=DIR Search DIR for imported Python modules.
|
||||
--implicit-cache Cache implicit dependencies
|
||||
--implicit-deps-changed Ignore cached implicit dependencies.
|
||||
--implicit-deps-unchanged Ignore changes in implicit dependencies.
|
||||
--interact, --interactive Run in interactive mode.
|
||||
-j N, --jobs=N Allow N jobs at once.
|
||||
-k, --keep-going Keep going when a target can't be made.
|
||||
--max-drift=N Set maximum system clock drift to N seconds.
|
||||
--md5-chunksize=N Set chunk-size for MD5 signature computation to
|
||||
N kilobytes.
|
||||
-n, --no-exec, --just-print, --dry-run, --recon
|
||||
Don't build; just print commands.
|
||||
--no-site-dir Don't search or use the usual site_scons dir.
|
||||
--profile=FILE Profile SCons and put results in FILE.
|
||||
-q, --question Don't build; exit status says if up to date.
|
||||
-Q Suppress "Reading/Building" progress messages.
|
||||
--random Build dependencies in random order.
|
||||
-s, --silent, --quiet Don't print commands.
|
||||
--site-dir=DIR Use DIR instead of the usual site_scons dir.
|
||||
--stack-size=N Set the stack size of the threads used to run
|
||||
jobs to N kilobytes.
|
||||
--taskmastertrace=FILE Trace Node evaluation to FILE.
|
||||
--tree=OPTIONS Print a dependency tree in various formats: all,
|
||||
derived, prune, status.
|
||||
-u, --up, --search-up Search up directory tree for SConstruct,
|
||||
build targets at or below current directory.
|
||||
-U Search up directory tree for SConstruct,
|
||||
build Default() targets from local SConscript.
|
||||
-v, --version Print the SCons version number and exit.
|
||||
--warn=WARNING-SPEC, --warning=WARNING-SPEC
|
||||
Enable or disable warnings.
|
||||
-Y REPOSITORY, --repository=REPOSITORY, --srcdir=REPOSITORY
|
||||
Search REPOSITORY for source and target files.
|
||||
|
||||
>> scons
|
||||
scons: Reading SConscript files ...
|
||||
scons: done reading SConscript files.
|
||||
scons: Building targets ...
|
||||
g++ -o main.o -c main.cpp
|
||||
g++ -o helloworld main.o
|
||||
scons: done building targets.
|
||||
|
||||
|
||||
>> scons
|
||||
scons: Reading SConscript files ...
|
||||
scons: done reading SConscript files.
|
||||
scons: Building targets ...
|
||||
scons: `.' is up to date.
|
||||
scons: done building targets.
|
||||
|
||||
|
||||
>> ls -a
|
||||
total 32
|
||||
drwxr-xr-x 2 brgirgis users 96 Sep 26 22:50 ./
|
||||
drwxr-xr-x 5 brgirgis users 36 Sep 26 22:44 ../
|
||||
-rwxr-xr-x 1 brgirgis users 13176 Sep 26 22:50 helloworld*
|
||||
-rw-r--r-- 1 brgirgis users 94 Sep 26 22:20 main.cpp
|
||||
-rw-r--r-- 1 brgirgis users 2728 Sep 26 22:50 main.o
|
||||
-rw-r--r-- 1 brgirgis users 1749 Sep 26 22:50 .sconsign.dblite
|
||||
-rw-r--r-- 1 brgirgis users 400 Sep 26 22:50 SConstruct
|
||||
|
||||
>> scons -c
|
||||
scons: Reading SConscript files ...
|
||||
scons: done reading SConscript files.
|
||||
scons: Cleaning targets ...
|
||||
Removed main.o
|
||||
Removed helloworld
|
||||
scons: done cleaning targets.
|
||||
|
||||
|
||||
>> ls -a
|
||||
total 12
|
||||
drwxr-xr-x 2 brgirgis users 64 Sep 26 22:53 ./
|
||||
drwxr-xr-x 5 brgirgis users 36 Sep 26 22:44 ../
|
||||
-rw-r--r-- 1 brgirgis users 94 Sep 26 22:20 main.cpp
|
||||
-rw-r--r-- 1 brgirgis users 1759 Sep 26 22:51 .sconsign.dblite
|
||||
-rw-r--r-- 1 brgirgis users 1178 Sep 26 22:54 SConstruct
|
||||
|
||||
""")
|
||||
|
||||
Program('helloworld', 'main.cpp')
|
||||
10
src/execEx/01/main.cpp
Normal file
10
src/execEx/01/main.cpp
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
#include <iostream>
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
std::cout << "Hello World!" << std::endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
73
src/execEx/02/SConstruct
Normal file
73
src/execEx/02/SConstruct
Normal file
@@ -0,0 +1,73 @@
|
||||
|
||||
Help("""
|
||||
|
||||
This is the second scons example. In this example we explore more options in
|
||||
scons. Once you start doing anything useful with scons other than showing
|
||||
how simple scons works, you will have to create an environment to have more
|
||||
control on the build.
|
||||
|
||||
One can "Dump()" the environment to see all the underlying details. We can
|
||||
also compare between Linux and windows environments.
|
||||
|
||||
>> ls
|
||||
foo.cpp foo.hpp main.cpp SConstruct
|
||||
|
||||
>> scons
|
||||
scons: Reading SConscript files ...
|
||||
------------------>starting
|
||||
------------------>ending
|
||||
scons: done reading SConscript files.
|
||||
scons: Building targets ...
|
||||
g++ -o foo.o -c foo.cpp
|
||||
g++ -o main.o -c main.cpp
|
||||
g++ -o helloworld main.o foo.o
|
||||
scons: done building targets.
|
||||
|
||||
|
||||
>> ls -a
|
||||
total 68
|
||||
drwxr-xr-x 2 brgirgis users 154 Sep 26 23:04 ./
|
||||
drwxr-xr-x 5 brgirgis users 36 Sep 26 22:44 ../
|
||||
-rw-r--r-- 1 brgirgis users 21096 Sep 26 23:04 env.txt
|
||||
-rw-r--r-- 1 brgirgis users 48 Sep 26 22:42 foo.cpp
|
||||
-rw-r--r-- 1 brgirgis users 109 Sep 26 22:40 foo.hpp
|
||||
-rw-r--r-- 1 brgirgis users 1256 Sep 26 23:03 foo.o
|
||||
-rwxr-xr-x 1 brgirgis users 13288 Sep 26 23:03 helloworld*
|
||||
-rw-r--r-- 1 brgirgis users 117 Sep 26 22:41 main.cpp
|
||||
-rw-r--r-- 1 brgirgis users 2872 Sep 26 23:03 main.o
|
||||
-rw-r--r-- 1 brgirgis users 2441 Sep 26 23:04 .sconsign.dblite
|
||||
-rw-r--r-- 1 brgirgis users 1348 Sep 26 23:04 SConstruct
|
||||
|
||||
|
||||
>> scons --tree=all helloworld
|
||||
scons: Reading SConscript files ...
|
||||
------------------>starting
|
||||
------------------>ending
|
||||
scons: done reading SConscript files.
|
||||
scons: Building targets ...
|
||||
scons: `helloworld' is up to date.
|
||||
+-helloworld
|
||||
+-main.o
|
||||
| +-main.cpp
|
||||
| +-foo.hpp
|
||||
| +-/usr/bin/g++
|
||||
+-foo.o
|
||||
| +-foo.cpp
|
||||
| +-foo.hpp
|
||||
| +-/usr/bin/g++
|
||||
+-/usr/bin/g++
|
||||
scons: done building targets.
|
||||
|
||||
|
||||
""")
|
||||
|
||||
print('------------------>starting')
|
||||
env = Environment()
|
||||
|
||||
open('env.txt', 'w').write(env.Dump())
|
||||
|
||||
env.Program(target='helloworld',
|
||||
source=['main.cpp', 'foo.cpp'])
|
||||
|
||||
print('------------------>ending')
|
||||
|
||||
8
src/execEx/02/foo.cpp
Normal file
8
src/execEx/02/foo.cpp
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
#include "foo.hpp"
|
||||
|
||||
int
|
||||
foo()
|
||||
{
|
||||
return 32;
|
||||
}
|
||||
6
src/execEx/02/foo.hpp
Normal file
6
src/execEx/02/foo.hpp
Normal file
@@ -0,0 +1,6 @@
|
||||
#ifndef SRC_EXECEX_02_FOO_HPP_
|
||||
#define SRC_EXECEX_02_FOO_HPP_
|
||||
|
||||
int foo();
|
||||
|
||||
#endif // SRC_EXECEX_02_FOO_HPP_
|
||||
12
src/execEx/02/main.cpp
Normal file
12
src/execEx/02/main.cpp
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
#include "foo.hpp"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
std::cout << "foo = " << foo() << std::endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
15
src/execEx/03/SConstruct
Normal file
15
src/execEx/03/SConstruct
Normal file
@@ -0,0 +1,15 @@
|
||||
|
||||
|
||||
env = Environment()
|
||||
|
||||
open('env.txt', 'w').write(env.Dump())
|
||||
|
||||
env.Program(target='helloworld',
|
||||
source=['main.cpp', 'foo.cpp'])
|
||||
|
||||
envClang = env.Clone()
|
||||
envClang.Replace(CXX='clang')
|
||||
|
||||
envClang.Program(target='helloworld-clang',
|
||||
source=['main.cpp', 'foo.cpp'])
|
||||
|
||||
8
src/execEx/03/foo.cpp
Normal file
8
src/execEx/03/foo.cpp
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
#include "foo.hpp"
|
||||
|
||||
int
|
||||
foo()
|
||||
{
|
||||
return 32;
|
||||
}
|
||||
6
src/execEx/03/foo.hpp
Normal file
6
src/execEx/03/foo.hpp
Normal file
@@ -0,0 +1,6 @@
|
||||
#ifndef SRC_EXECEX_02_FOO_HPP_
|
||||
#define SRC_EXECEX_02_FOO_HPP_
|
||||
|
||||
int foo();
|
||||
|
||||
#endif // SRC_EXECEX_02_FOO_HPP_
|
||||
12
src/execEx/03/main.cpp
Normal file
12
src/execEx/03/main.cpp
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
#include "foo.hpp"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
std::cout << "foo = " << foo() << std::endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user