Quantitative Analysis
Parallel Processing
Numerical Analysis
C++ Multithreading
Python for Excel
Python Utilities
Services
Author

I. Python Object Browser.
II. Python to R Communicator.
III. Manipulation of piecewise polynomial functions.
IV. Building C++ projects.
1. Why not use bjam?
2. Installation of ots.make.
3. Code structure (ots.make).
4. Example. Building boost::python DLL.
5. Example. Building boost::python extension involving Cuda code.
6. Example. Building in-process COM DLL with embedded boost::python engine.
Downloads. Index. Contents.

Example. Building in-process COM DLL with embedded boost::python engine.


he following script builds the pfeAddin.dll, the principal component of Python for Excel.

import ots.make.options as opt

import ots.make.generator as gen

import ots.io as io

version=opt.Version.Release

boost=opt.Libs.Boost_1_51

stlport=opt.Libs.STLport

Opts=[

(opt.Runtime.Msvc9,opt.Libs.Python26),

(opt.Runtime.Msvc71,opt.Libs.Python25),

(opt.Runtime.Msvc9,opt.Libs.Python27)

]

otsDir=opt.CDrive+"OTSProjects"

pfeDir=otsDir+"PythonForExcel"

execfile(str(pfeDir+'distribution'+'mak'+'wrPyVersion.py'))

for (runtime,python) in Opts :

libs=[stlport,python,boost,boost.Python,boost.Thread]

if( runtime==opt.Runtime.Msvc9 ) :

addinDir=pfeDir+"p26ide"+"pfeAddin"+"pfeAddin"

csDir=pfeDir+"p26ide"+"pfeControlShell"+"pfeControlShell"

pokerDir=pfeDir+"p26ide"+"pfeExcelPoker"+"pfeExcelPoker"

if( runtime==opt.Runtime.Msvc71 ) :

addinDir=pfeDir+"pfeAddin"

csDir=pfeDir+"pfeControlShell"

pokerDir=pfeDir+"pfeExcelPoker"

files=[

(

addinDir,

[

"CoExcelListener.cpp",

"ComHousing.cpp",

"ControlShellAccess.cpp",

"pfeAddin_i.c",

"pfeAddin.idl",

"pfeAddin.def"

]

),

(

pokerDir,

[

"pfeExcelPoker_i.c"

]

),

(

pfeDir+"pfe"+"addin",

[

"pfe_addin_impl.cpp",

"pfe_addin_pyredirect.cpp"

]

),

(

pfeDir+"pfe"+"errors",

[

"pfe_error_check.cpp",

"pfe_error_MessageBoxReporting.cpp",

"pfe_error_pythonRegistration.cpp"

]

),

(

pfeDir+"pfe"+"pythonAPI",

[

"PythonSession.cpp"

]

),

(

pfeDir+"pfe"+"vba",

[

"Application.cpp",

"Border.cpp",

"Borders.cpp",

"ColorIndex.cpp",

"Dispatch.cpp",

"DispatchId.cpp",

"ErrorCode.cpp",

"ExcelEvents.cpp",

"ExcelEventsToString.cpp",

"Font.cpp",

"Hyperlink.cpp",

"Hyperlinks.cpp",

"Interior.cpp",

"Invoke.cpp",

"InvokeConverters.cpp",

"Name.cpp",

"Names.cpp",

"ObjectToVariant.cpp",

"Range.cpp",

"SafeArray.cpp",

"SafeArrayAccessorMap.cpp",

"StreamConverter.cpp",

"TypeInfo.cpp",

"TypeString.cpp",

"Unknown.cpp",

"Variant.cpp",

"VariantBase.cpp",

"VariantAccessorMap.cpp",

"VariantToObject.cpp",

"VarType.cpp",

"Window.cpp",

"Windows.cpp",

"Workbook.cpp",

"Workbooks.cpp",

"Worksheet.cpp",

"Worksheets.cpp"

]

),

(

pfeDir+"pfe"+"copyProtection",

[

"ots_cp_check0.cpp",

"ots_cp_check1.cpp",

"ots_cp_check2.cpp",

"ots_cp_check3.cpp",

"ots_cp_check4.cpp",

"ots_cp_check5.cpp",

"ots_cp_check6.cpp",

"ots_cp_check7.cpp",

"ots_cp_check8.cpp",

"ots_cp_getId0.cpp",

"ots_cp_getId1.cpp",

"ots_cp_getId2.cpp",

"ots_cp_getId3.cpp",

"ots_cp_getId4.cpp",

"ots_cp_getId5.cpp",

"ots_cp_getId6.cpp",

"ots_cp_getId7.cpp",

"ots_cp_getId8.cpp",

"ots_cp_map.cpp",

"ots_cp_msg0.cpp",

"ots_cp_msg1.cpp",

"ots_cp_msg2.cpp",

"ots_cp_msg3.cpp",

"ots_cp_msg4.cpp",

"ots_cp_msg5.cpp",

"ots_cp_msg6.cpp",

"ots_cp_msg7.cpp",

"ots_cp_msg8.cpp",

"ots_cp_pcid0.cpp",

"ots_cp_perm.cpp",

"ots_cp_random.cpp",

"ots_cp_trm0.cpp",

"ots_cp_trm1.cpp",

"ots_cp_trm2.cpp",

"ots_cp_trm3.cpp",

"ots_cp_trm4.cpp",

"ots_cp_trm5.cpp",

"ots_cp_trm6.cpp",

"ots_cp_trm7.cpp",

"ots_cp_trm8.cpp",

"ots_cp_version.cpp"

]

),

(

otsDir+"ots"+"utils",

[

"otsString.cpp",

"otsDate.cpp"

]

),

(

otsDir+"ots"+"math"+"random",

[

"uniform.cpp",

"uniform2.cpp"

]

)

]

if( runtime==opt.Runtime.Msvc9 ) :

files.append( ( addinDir, [ "rc.rc" ] ) )

outputName="pfeAddin"

outputDir=pfeDir+"distribution"+"output"+python.pythonString()

objDir=pfeDir+"distribution"+"output"+"tmp"+("ai"+python.pythonSuffix())

g=gen.MakeFile(

outputName=outputName,

outputDir=outputDir,

objDir=objDir,

version=version,

runtime=runtime,

output=opt.Output.ComDll,

libs=libs,

files=files,

compile=[

opt.Compile.Include('"'+str(pfeDir)+'"'),

opt.Compile.Include('"'+str(otsDir)+'"')

],

askBeforeDelete=False

)

g.make()

g.build()

For the MSVC9 option, the above script would generate the following make file.

CP_OPTS = \

-DBOOST_ALL_DYN_LINK=1 \

-DBOOST_ALL_NO_LIB=1 \

-DUNICODE \

-DWIN32 \

-D_MBCS \

-D_UNICODE \

-D_USRDLL \

-D_WINDLL \

-D_WINDOWS \

-I"c:/OTSProjects" \

-I"c:/OTSProjects/PythonForExcel" \

-I"c:/STLport-5.2.1/stlport" \

-I"c:/boost_1_51_0" \

-I"c:/python26/include" \

-c \

/EHsc \

/GR \

/GS \

/MD \

/O2 \

/Ob2 \

/W3 \

/Zc:forScope \

/Zc:wchar_t \

/wd4675

LN_LIBS = \

bCrn_b151_msvc9_release_stlp521.lib \

bDt_b151_msvc9_release_stlp521.lib \

bPy_b151_msvc9_py26_release_stlp521.lib \

bSys_b151_msvc9_release_stlp521.lib \

bTh_b151_msvc9_release_stlp521.lib \

kernel32.lib \

ole32.lib \

oleaut32.lib \

python26.lib \

user32.lib

LN_OPTS = \

/DEF:"c:/OTSProjects/PythonForExcel/p26ide/pfeAddin/pfeAddin/pfeAddin.def" \

/DLL \

/IMPLIB:$(OUTPUT_DIR)/$(RESULT_NAME).lib \

/INCREMENTAL:NO \

/LIBPATH:"c:/OTSProjects/Boost/Chrono/bin/bCrn_b151_msvc9_release_stlp521" \

/LIBPATH:"c:/OTSProjects/Boost/DateTime/bin/bDt_b151_msvc9_release_stlp521" \

/LIBPATH:"c:/OTSProjects/Boost/Python/bin/bPy_b151_msvc9_py26_release_stlp521" \

/LIBPATH:"c:/OTSProjects/Boost/System/bin/bSys_b151_msvc9_release_stlp521" \

/LIBPATH:"c:/OTSProjects/Boost/Thread/bin/bTh_b151_msvc9_release_stlp521" \

/LIBPATH:"c:/STLport-5.2.1/build/lib/obj/vc9/shared" \

/LIBPATH:"c:/python26/libs" \

/MACHINE:X86 \

/MANIFEST \

/MANIFESTUAC:"level='asInvoker' uiAccess='false'" \

/NOLOGO \

/opt:icf \

/opt:ref \

/out:"$(OUTPUT_DIR)/$(RESULT_NAME).dll" \

/subsystem:windows

MIDL_OPTS = \

/D "NDEBUG" \

/Oicf \

/char signed \

/env win32 \

/error stub_data \

/h "$(SRC_DIR0)/pfeAddin_h.h" \

/iid "$(SRC_DIR0)/pfeAddin_i.c" \

/proxy "$(SRC_DIR0)/pfeAddin_p.c" \

/tlb "$(OUTPUT_DIR)/pfeAddin.tlb"

OBJS = \

$(OBJ_DIR0)/CoExcelListener.obj \

$(OBJ_DIR0)/ComHousing.obj \

$(OBJ_DIR0)/ControlShellAccess.obj \

$(OBJ_DIR0)/pfeAddin.res \

$(OBJ_DIR0)/pfeAddin_i.obj \

$(OBJ_DIR1)/pfeExcelPoker_i.obj \

$(OBJ_DIR2)/pfe_addin_impl.obj \

$(OBJ_DIR2)/pfe_addin_pyredirect.obj \

$(OBJ_DIR3)/pfe_error_MessageBoxReporting.obj \

$(OBJ_DIR3)/pfe_error_check.obj \

$(OBJ_DIR3)/pfe_error_pythonRegistration.obj \

$(OBJ_DIR4)/PythonSession.obj \

$(OBJ_DIR5)/Application.obj \

$(OBJ_DIR5)/Border.obj \

$(OBJ_DIR5)/Borders.obj \

$(OBJ_DIR5)/ColorIndex.obj \

$(OBJ_DIR5)/Dispatch.obj \

$(OBJ_DIR5)/DispatchId.obj \

$(OBJ_DIR5)/ErrorCode.obj \

$(OBJ_DIR5)/ExcelEvents.obj \

$(OBJ_DIR5)/ExcelEventsToString.obj \

$(OBJ_DIR5)/Font.obj \

$(OBJ_DIR5)/Hyperlink.obj \

$(OBJ_DIR5)/Hyperlinks.obj \

$(OBJ_DIR5)/Interior.obj \

$(OBJ_DIR5)/Invoke.obj \

$(OBJ_DIR5)/InvokeConverters.obj \

$(OBJ_DIR5)/Name.obj \

$(OBJ_DIR5)/Names.obj \

$(OBJ_DIR5)/ObjectToVariant.obj \

$(OBJ_DIR5)/Range.obj \

$(OBJ_DIR5)/SafeArray.obj \

$(OBJ_DIR5)/SafeArrayAccessorMap.obj \

$(OBJ_DIR5)/StreamConverter.obj \

$(OBJ_DIR5)/TypeInfo.obj \

$(OBJ_DIR5)/TypeString.obj \

$(OBJ_DIR5)/Unknown.obj \

$(OBJ_DIR5)/VarType.obj \

$(OBJ_DIR5)/Variant.obj \

$(OBJ_DIR5)/VariantAccessorMap.obj \

$(OBJ_DIR5)/VariantBase.obj \

$(OBJ_DIR5)/VariantToObject.obj \

$(OBJ_DIR5)/Window.obj \

$(OBJ_DIR5)/Windows.obj \

$(OBJ_DIR5)/Workbook.obj \

$(OBJ_DIR5)/Workbooks.obj \

$(OBJ_DIR5)/Worksheet.obj \

$(OBJ_DIR5)/Worksheets.obj \

$(OBJ_DIR6)/ots_cp_check0.obj \

$(OBJ_DIR6)/ots_cp_check1.obj \

$(OBJ_DIR6)/ots_cp_check2.obj \

$(OBJ_DIR6)/ots_cp_check3.obj \

$(OBJ_DIR6)/ots_cp_check4.obj \

$(OBJ_DIR6)/ots_cp_check5.obj \

$(OBJ_DIR6)/ots_cp_check6.obj \

$(OBJ_DIR6)/ots_cp_check7.obj \

$(OBJ_DIR6)/ots_cp_check8.obj \

$(OBJ_DIR6)/ots_cp_getId0.obj \

$(OBJ_DIR6)/ots_cp_getId1.obj \

$(OBJ_DIR6)/ots_cp_getId2.obj \

$(OBJ_DIR6)/ots_cp_getId3.obj \

$(OBJ_DIR6)/ots_cp_getId4.obj \

$(OBJ_DIR6)/ots_cp_getId5.obj \

$(OBJ_DIR6)/ots_cp_getId6.obj \

$(OBJ_DIR6)/ots_cp_getId7.obj \

$(OBJ_DIR6)/ots_cp_getId8.obj \

$(OBJ_DIR6)/ots_cp_map.obj \

$(OBJ_DIR6)/ots_cp_msg0.obj \

$(OBJ_DIR6)/ots_cp_msg1.obj \

$(OBJ_DIR6)/ots_cp_msg2.obj \

$(OBJ_DIR6)/ots_cp_msg3.obj \

$(OBJ_DIR6)/ots_cp_msg4.obj \

$(OBJ_DIR6)/ots_cp_msg5.obj \

$(OBJ_DIR6)/ots_cp_msg6.obj \

$(OBJ_DIR6)/ots_cp_msg7.obj \

$(OBJ_DIR6)/ots_cp_msg8.obj \

$(OBJ_DIR6)/ots_cp_pcid0.obj \

$(OBJ_DIR6)/ots_cp_perm.obj \

$(OBJ_DIR6)/ots_cp_random.obj \

$(OBJ_DIR6)/ots_cp_trm0.obj \

$(OBJ_DIR6)/ots_cp_trm1.obj \

$(OBJ_DIR6)/ots_cp_trm2.obj \

$(OBJ_DIR6)/ots_cp_trm3.obj \

$(OBJ_DIR6)/ots_cp_trm4.obj \

$(OBJ_DIR6)/ots_cp_trm5.obj \

$(OBJ_DIR6)/ots_cp_trm6.obj \

$(OBJ_DIR6)/ots_cp_trm7.obj \

$(OBJ_DIR6)/ots_cp_trm8.obj \

$(OBJ_DIR6)/ots_cp_version.obj \

$(OBJ_DIR7)/otsDate.obj \

$(OBJ_DIR7)/otsString.obj \

$(OBJ_DIR8)/uniform.obj \

$(OBJ_DIR8)/uniform2.obj

OBJ_DIR0 = c:/OTSProjects/PythonForExcel/distribution/output/tmp/ai26/dir0

OBJ_DIR1 = c:/OTSProjects/PythonForExcel/distribution/output/tmp/ai26/dir1

OBJ_DIR2 = c:/OTSProjects/PythonForExcel/distribution/output/tmp/ai26/dir2

OBJ_DIR3 = c:/OTSProjects/PythonForExcel/distribution/output/tmp/ai26/dir3

OBJ_DIR4 = c:/OTSProjects/PythonForExcel/distribution/output/tmp/ai26/dir4

OBJ_DIR5 = c:/OTSProjects/PythonForExcel/distribution/output/tmp/ai26/dir5

OBJ_DIR6 = c:/OTSProjects/PythonForExcel/distribution/output/tmp/ai26/dir6

OBJ_DIR7 = c:/OTSProjects/PythonForExcel/distribution/output/tmp/ai26/dir7

OBJ_DIR8 = c:/OTSProjects/PythonForExcel/distribution/output/tmp/ai26/dir8

OUTPUT_DIR = c:/OTSProjects/PythonForExcel/distribution/output/python26

RCSCRIPT_FILE = c:/OTSProjects/PythonForExcel/p26ide/pfeAddin/pfeAddin/rc.rc

RC_INCLUDE = c:/Program Files/Microsoft Visual Studio 9.0/VC/atlmfc/include

RESULT_NAME = pfeAddin

SRC_DIR0 = c:/OTSProjects/PythonForExcel/p26ide/pfeAddin/pfeAddin

SRC_DIR1 = c:/OTSProjects/PythonForExcel/p26ide/pfeExcelPoker/pfeExcelPoker

SRC_DIR2 = c:/OTSProjects/PythonForExcel/pfe/addin

SRC_DIR3 = c:/OTSProjects/PythonForExcel/pfe/errors

SRC_DIR4 = c:/OTSProjects/PythonForExcel/pfe/pythonAPI

SRC_DIR5 = c:/OTSProjects/PythonForExcel/pfe/vba

SRC_DIR6 = c:/OTSProjects/PythonForExcel/pfe/copyProtection

SRC_DIR7 = c:/OTSProjects/ots/utils

SRC_DIR8 = c:/OTSProjects/ots/math/random

goal : "$(OUTPUT_DIR)/$(RESULT_NAME).dll" "$(OUTPUT_DIR)/pfeAddin.tlb"

"$(OBJ_DIR0)/CoExcelListener.obj" : "$(SRC_DIR0)/CoExcelListener.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR0)/ComHousing.obj" : "$(SRC_DIR0)/ComHousing.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR0)/ControlShellAccess.obj" : "$(SRC_DIR0)/ControlShellAccess.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR0)/pfeAddin.res" : "$(RCSCRIPT_FILE)" "$(OUTPUT_DIR)/pfeAddin.tlb"

rc.exe /d "NDEBUG" /d "_UNICODE" /d "UNICODE" /i "$(RC_INCLUDE)" /l 0x409 /fo"$(OBJ_DIR0)/pfeAddin.res" "$(RCSCRIPT_FILE)"

"$(OBJ_DIR0)/pfeAddin_i.obj" : "$(SRC_DIR0)/pfeAddin_i.c"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR1)/pfeExcelPoker_i.obj" : "$(SRC_DIR1)/pfeExcelPoker_i.c"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR2)/pfe_addin_impl.obj" : "$(SRC_DIR2)/pfe_addin_impl.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR2)/pfe_addin_pyredirect.obj" : "$(SRC_DIR2)/pfe_addin_pyredirect.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR3)/pfe_error_MessageBoxReporting.obj" : "$(SRC_DIR3)/pfe_error_MessageBoxReporting.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR3)/pfe_error_check.obj" : "$(SRC_DIR3)/pfe_error_check.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR3)/pfe_error_pythonRegistration.obj" : "$(SRC_DIR3)/pfe_error_pythonRegistration.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR4)/PythonSession.obj" : "$(SRC_DIR4)/PythonSession.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Application.obj" : "$(SRC_DIR5)/Application.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Border.obj" : "$(SRC_DIR5)/Border.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Borders.obj" : "$(SRC_DIR5)/Borders.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/ColorIndex.obj" : "$(SRC_DIR5)/ColorIndex.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Dispatch.obj" : "$(SRC_DIR5)/Dispatch.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/DispatchId.obj" : "$(SRC_DIR5)/DispatchId.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/ErrorCode.obj" : "$(SRC_DIR5)/ErrorCode.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/ExcelEvents.obj" : "$(SRC_DIR5)/ExcelEvents.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/ExcelEventsToString.obj" : "$(SRC_DIR5)/ExcelEventsToString.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Font.obj" : "$(SRC_DIR5)/Font.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Hyperlink.obj" : "$(SRC_DIR5)/Hyperlink.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Hyperlinks.obj" : "$(SRC_DIR5)/Hyperlinks.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Interior.obj" : "$(SRC_DIR5)/Interior.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Invoke.obj" : "$(SRC_DIR5)/Invoke.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/InvokeConverters.obj" : "$(SRC_DIR5)/InvokeConverters.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Name.obj" : "$(SRC_DIR5)/Name.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Names.obj" : "$(SRC_DIR5)/Names.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/ObjectToVariant.obj" : "$(SRC_DIR5)/ObjectToVariant.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Range.obj" : "$(SRC_DIR5)/Range.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/SafeArray.obj" : "$(SRC_DIR5)/SafeArray.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/SafeArrayAccessorMap.obj" : "$(SRC_DIR5)/SafeArrayAccessorMap.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/StreamConverter.obj" : "$(SRC_DIR5)/StreamConverter.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/TypeInfo.obj" : "$(SRC_DIR5)/TypeInfo.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/TypeString.obj" : "$(SRC_DIR5)/TypeString.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Unknown.obj" : "$(SRC_DIR5)/Unknown.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/VarType.obj" : "$(SRC_DIR5)/VarType.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Variant.obj" : "$(SRC_DIR5)/Variant.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/VariantAccessorMap.obj" : "$(SRC_DIR5)/VariantAccessorMap.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/VariantBase.obj" : "$(SRC_DIR5)/VariantBase.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/VariantToObject.obj" : "$(SRC_DIR5)/VariantToObject.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Window.obj" : "$(SRC_DIR5)/Window.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Windows.obj" : "$(SRC_DIR5)/Windows.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Workbook.obj" : "$(SRC_DIR5)/Workbook.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Workbooks.obj" : "$(SRC_DIR5)/Workbooks.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Worksheet.obj" : "$(SRC_DIR5)/Worksheet.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR5)/Worksheets.obj" : "$(SRC_DIR5)/Worksheets.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_check0.obj" : "$(SRC_DIR6)/ots_cp_check0.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_check1.obj" : "$(SRC_DIR6)/ots_cp_check1.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_check2.obj" : "$(SRC_DIR6)/ots_cp_check2.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_check3.obj" : "$(SRC_DIR6)/ots_cp_check3.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_check4.obj" : "$(SRC_DIR6)/ots_cp_check4.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_check5.obj" : "$(SRC_DIR6)/ots_cp_check5.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_check6.obj" : "$(SRC_DIR6)/ots_cp_check6.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_check7.obj" : "$(SRC_DIR6)/ots_cp_check7.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_check8.obj" : "$(SRC_DIR6)/ots_cp_check8.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_getId0.obj" : "$(SRC_DIR6)/ots_cp_getId0.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_getId1.obj" : "$(SRC_DIR6)/ots_cp_getId1.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_getId2.obj" : "$(SRC_DIR6)/ots_cp_getId2.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_getId3.obj" : "$(SRC_DIR6)/ots_cp_getId3.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_getId4.obj" : "$(SRC_DIR6)/ots_cp_getId4.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_getId5.obj" : "$(SRC_DIR6)/ots_cp_getId5.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_getId6.obj" : "$(SRC_DIR6)/ots_cp_getId6.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_getId7.obj" : "$(SRC_DIR6)/ots_cp_getId7.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_getId8.obj" : "$(SRC_DIR6)/ots_cp_getId8.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_map.obj" : "$(SRC_DIR6)/ots_cp_map.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_msg0.obj" : "$(SRC_DIR6)/ots_cp_msg0.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_msg1.obj" : "$(SRC_DIR6)/ots_cp_msg1.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_msg2.obj" : "$(SRC_DIR6)/ots_cp_msg2.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_msg3.obj" : "$(SRC_DIR6)/ots_cp_msg3.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_msg4.obj" : "$(SRC_DIR6)/ots_cp_msg4.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_msg5.obj" : "$(SRC_DIR6)/ots_cp_msg5.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_msg6.obj" : "$(SRC_DIR6)/ots_cp_msg6.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_msg7.obj" : "$(SRC_DIR6)/ots_cp_msg7.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_msg8.obj" : "$(SRC_DIR6)/ots_cp_msg8.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_pcid0.obj" : "$(SRC_DIR6)/ots_cp_pcid0.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_perm.obj" : "$(SRC_DIR6)/ots_cp_perm.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_random.obj" : "$(SRC_DIR6)/ots_cp_random.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_trm0.obj" : "$(SRC_DIR6)/ots_cp_trm0.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_trm1.obj" : "$(SRC_DIR6)/ots_cp_trm1.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_trm2.obj" : "$(SRC_DIR6)/ots_cp_trm2.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_trm3.obj" : "$(SRC_DIR6)/ots_cp_trm3.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_trm4.obj" : "$(SRC_DIR6)/ots_cp_trm4.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_trm5.obj" : "$(SRC_DIR6)/ots_cp_trm5.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_trm6.obj" : "$(SRC_DIR6)/ots_cp_trm6.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_trm7.obj" : "$(SRC_DIR6)/ots_cp_trm7.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_trm8.obj" : "$(SRC_DIR6)/ots_cp_trm8.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR6)/ots_cp_version.obj" : "$(SRC_DIR6)/ots_cp_version.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR7)/otsDate.obj" : "$(SRC_DIR7)/otsDate.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR7)/otsString.obj" : "$(SRC_DIR7)/otsString.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR8)/uniform.obj" : "$(SRC_DIR8)/uniform.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OBJ_DIR8)/uniform2.obj" : "$(SRC_DIR8)/uniform2.cpp"

cl $? -Fo$@ $(CP_OPTS)

"$(OUTPUT_DIR)/$(RESULT_NAME).dll" : $(OBJS)

link $(LN_OPTS) $(OBJS) $(LN_LIBS)

mt -nologo -manifest "$(OUTPUT_DIR)/$(RESULT_NAME).dll.manifest" -outputresource:"$(OUTPUT_DIR)/$(RESULT_NAME).dll;#2"

"$(OUTPUT_DIR)/pfeAddin.tlb" : "$(SRC_DIR0)/pfeAddin.idl"

midl.exe $(MIDL_OPTS) $?





Downloads. Index. Contents.


















Copyright 2007