Пример #1
0
    def __AddApplications(self,
                          _holderProject,
                          _applicationDependenciesList,
                          _modules,
                          _modulesFolder,
                          _pch="",
                          _holderName=None,
                          _properties=[]):
        """ 
        Creates application projects and adds them to _holderProject (using _holderProject.AddProject). The holder
        project does not depend on these application projects.
    
        It is assumed that _modules is a list containing subfolders of _modulesFolder.
        Each subfolder in _modules should contain source files (.cpp, .cxx or .cc), where each source file corresponds to a single application.
        Hence, each source file is used to create a new application project. For example, assuming that the _modulesFolder
        is called 'Applications', the file 'Applications/Small/Tiny.cpp' will be used to build the 'Tiny' application.
        
        _applicationDependenciesList - List of projects that each new application project is dependent on.
    
        _modulesFolder - Folder containing subfolders with applications.
        _modules = List of subfolders of _modulesFolder that should be processed.
        _pch - If not "", this is the C++ include file which is used for building a precompiled header file for each application.
        """
        for module in _modules:
            moduleFolder = "%s/%s" % (_modulesFolder, module)
            sourceFiles = []
            headerFiles = []
            for extension in csnUtility.GetSourceFileExtensions():
                sourceFiles.extend(
                    _holderProject.Glob("%s/*.%s" % (moduleFolder, extension)))

            for extension in csnUtility.GetIncludeFileExtensions():
                headerFiles.extend(
                    _holderProject.Glob("%s/*.%s" % (moduleFolder, extension)))

            for sourceFile in sourceFiles:
                if os.path.isdir(sourceFile):
                    continue
                name = os.path.splitext(os.path.basename(sourceFile))[0]
                name = name.replace(' ', '_')
                if _holderName is None:
                    _holderName = _holderProject.name
                app = csnBuild.Project(
                    "%s_%s" % (_holderName, name),
                    "executable",
                    _sourceRootFolder=_holderProject.GetSourceRootFolder())
                app.AddIncludeFolders([moduleFolder])
                app.AddProjects(_applicationDependenciesList)
                app.AddSources([sourceFile])
                app.AddProperties(_properties)
                # add header files so that they appear in visual studio
                app.AddSources(headerFiles)
                if (_pch != ""):
                    app.SetPrecompiledHeader(_pch)
                _holderProject.AddProjects([app])
Пример #2
0
def CommandLinePlugin(_name, _holderProject=None):
    """ Create a command line plugin project. """
    _sourceRootFolder = csnUtility.NormalizePath(
        os.path.dirname(csnProject.FindFilename(1)))

    # command line lib
    projectLibName = "%sLib" % _name
    projectLib = csnProject.Project(projectLibName, "dll", _sourceRootFolder)
    #project = CilabModuleProject(projectName, "dll", _sourceRootFolder)
    projectLib.AddDefinitions(["-Dmain=ModuleEntryPoint"], _private=1)
    projectLib.installSubFolder = "commandLinePlugins"
    projectLib.CMakeInsertBeforeTarget = new.instancemethod(
        CreateCMakeCLPPre, projectLib)
    projectLib.CMakeInsertAfterTarget = new.instancemethod(
        CreateCMakeCLPPost, projectLib)

    # command line executable
    projectAppName = _name
    projectApp = csnBuild.Project(projectAppName, "executable",
                                  _sourceRootFolder)
    projectApp.AddProjects([projectLib])
    projectApp.installSubFolder = "commandLinePlugins"
    # wrapper for shared libraries
    wrapperSourceFile = None
    for thirdParty in csnProject.globalCurrentContext.GetThirdPartyFolders():
        currentWrapperSourceFile = u'%s/SLICER/Slicer3/Applications/CLI/Templates/CommandLineSharedLibraryWrapper.cxx' % thirdParty
        if os.path.isfile(currentWrapperSourceFile):
            wrapperSourceFile = currentWrapperSourceFile
    if wrapperSourceFile is None:
        raise Exception(
            "Could not find Slicer template in your thirdParty folders.")
    projectApp.AddSources([wrapperSourceFile])

    # force the creation of the application project
    projectLib.AddProjects([projectApp], _dependency=0)

    if not (_holderProject is None):
        _holderProject.AddProjects([projectLib])

    return projectLib
Пример #3
0
    def AddApplications(self,
                        _modules,
                        _pch="",
                        _applicationDependenciesList=None,
                        _holderName=None,
                        _properties=[]):
        """
        Creates extra CSnake projects, each project building one application in the 'Applications' subfolder of the current project.
    
        _modules - List of the subfolders within the 'Applications' subfolder that must be scanned for applications.
        _pch - If not "", this is the include file used to generate a precompiled header for each application.
        """
        dependencies = [self]
        if not _applicationDependenciesList is None:
            dependencies.extend(_applicationDependenciesList)

        if _holderName is None:
            _holderName = "%sApplications" % self.name

        csnProject.globalCurrentContext.SetSuperSubCategory(
            "Applications", _holderName)
        if self.applicationsProject is None:
            self.applicationsProject = csnBuild.Project(
                self.name + "Applications",
                "container",
                _sourceRootFolder=self.GetSourceRootFolder(),
                _categories=[_holderName])
            #self.applicationsProject.AddSources([csnUtility.GetDummyCppFilename()], _sourceGroup = "CSnakeGeneratedFiles")
            self.applicationsProject.AddProjects([self])
            self.AddProjects([self.applicationsProject], _dependency=0)

        # look for an 'applications' or 'Applications' folder
        _modulesFolder = "%s/applications" % self.GetSourceRootFolder()
        if not os.path.exists(_modulesFolder):
            _modulesFolder = "%s/Applications" % self.GetSourceRootFolder()
        self.__AddApplications(self.applicationsProject, dependencies,
                               _modules, _modulesFolder, _pch, _holderName,
                               _properties)
Пример #4
0
# Used to configure gmCoreLight
import csnBuild
from csnGIMIASDef import *
import os.path

gmCoreLight = csnBuild.Project("gmCoreLight", "library")
gmCoreLight.AddProjects([
    gmCommonObjects, gmDataHandling, gmKernel, gmWidgets, gmProcessors,
    gmFrontEndPlugin
])

#gmCoreLight.SetPrecompiledHeader("gmCoreLightPCH.h")
gmCoreLight.compileManager.generateWin32Header = False

gmCoreLight.AddLibraries(["util"], _NOT_WIN32=1)

gmCoreLight.AddFilesToInstall(gmCoreLight.Glob("Copyrights/*.txt"),
                              "Copyrights")
gmCoreLight.AddFilesToInstall(gmCoreLight.Glob("resource"), "resource")
gmCoreLight.AddFilesToInstall(gmCoreLight.Glob("Core/*.xml"), "")
gmCoreLight.AddFilesToInstall(gmCoreLight.Glob("Core/*.xsl"), "")

#gmCoreLight.AddTests(["Tests/*.*"], cxxTest)
#gmCoreLight.testProject.SetPrecompiledHeader("gmCoreLightPCH.h")
Пример #5
0
# Used to configure coreIO
import csnBuild
from csnGIMIASDef import *
import os.path
import csnProject

gmCommonObjects = csnBuild.Project("gmCommonObjects", "dll")
gmCommonObjects.AddProjects([itk, boost])

gmCommonObjects.SetPrecompiledHeader("gmCommonObjectsPCH.h")

baseFolders = ["src"]

for baseFolder in baseFolders:
    gmCommonObjects.AddSources(["%s/*.cxx" % baseFolder], _checkExists=0)
    gmCommonObjects.AddSources(["%s/*.txx" % baseFolder], _checkExists=0)
    gmCommonObjects.AddSources(["%s/*.h" % baseFolder], _checkExists=0)
    gmCommonObjects.AddIncludeFolders([baseFolder])
Пример #6
0
# Used to configure lcore
import csnBuild
from csnGIMIASDef import *
import os.path
import csnProject

#used to access sys,platform. Delete when remove the fura window. Martin 27/03/2009
import sys

gmDataHandling = csnBuild.Project("gmDataHandling", "dll")
gmDataHandling.AddProjects([ 
  cilabMacros, 
  itk, 
  vtk,
  baseLibVTK,
  baseLibSignal,
  baseLibNumericData,
  boost,
  dcmAPI,
  gmCommonObjects
])

gmDataHandling.SetPrecompiledHeader("gmDataHandlingPCH.h")

baseFolders = [
  "src"
]

for baseFolder in baseFolders:
        gmDataHandling.AddSources(["%s/*.cxx" % baseFolder], _checkExists = 0)
        gmDataHandling.AddSources(["%s/*.txx" % baseFolder], _checkExists = 0)
Пример #7
0
# Used to configure coreIO
import csnBuild
from csnGIMIASDef import *
import os.path
import csnProject

gmKernel = csnBuild.Project("gmKernel", "dll")
gmKernel.AddProjects([
    cilabMacros, itk, baseLibVTK, boost, gmCommonObjects, gmDataHandling, gmIO,
    gmFrontEndPlugin, dynLib, wxWidgets
])

gmKernel.SetPrecompiledHeader("gmKernelPCH.h")

baseFolders = ["src"]

for baseFolder in baseFolders:
    gmKernel.AddSources(["%s/*.cxx" % baseFolder], _checkExists=0)
    gmKernel.AddSources(["%s/*.txx" % baseFolder], _checkExists=0)
    gmKernel.AddSources(["%s/*.h" % baseFolder], _checkExists=0)
    gmKernel.AddIncludeFolders([baseFolder])

gmKernel.AddFilesToInstall(gmKernel.Glob("resource"), "resource")
Пример #8
0
# Used to configure coreIO
import csnBuild
from csnGIMIASDef import *
import os.path
import csnProject

gmItkDataEntityIO = csnBuild.Project("gmItkDataEntityIO", "dll")
gmItkDataEntityIO.AddProjects([itk, gmDataHandling])
gmItkDataEntityIO.AddSources(["src/itkDataEntityIO/*.cxx"], _checkExists=0)
gmItkDataEntityIO.AddSources(["src/itkDataEntityIO/*.txx"], _checkExists=0)
gmItkDataEntityIO.AddSources(["src/itkDataEntityIO/*.h"], _checkExists=0)
gmItkDataEntityIO.SetPrecompiledHeader("gmitkDataEntityIOPCH.h")
gmItkDataEntityIO.AddIncludeFolders(["src/itkDataEntityIO"])

gmIO = csnBuild.Project("gmIO", "dll")
gmIO.AddProjects([
    cilabMacros, xerces, itk, baseLibVTK, boost, dcmAPI, gmCommonObjects,
    gmDataHandling, cgns, hdf5, gmItkDataEntityIO
])

gmIO.SetPrecompiledHeader("gmIOPCH.h")

gmIO.AddSources(["src/*.cxx"], _checkExists=0)
gmIO.AddSources(["src/*.txx"], _checkExists=0)
gmIO.AddSources(["src/*.h"], _checkExists=0)
gmIO.AddIncludeFolders(["src"])

IOFolders = gmIO.Glob("src/DataFormatObjects/*")
for IOFolder in IOFolders:
    if os.path.isdir(IOFolder):
        gmIO.AddSources(["%s/*.cxx" % IOFolder], _checkExists=0)
Пример #9
0
# Project variable definitions
import csnCilab
import csnBuild


def dummyLib():
    import DummyLib.csnDummyLib
    return DummyLib.csnDummyLib.dummyLib


def cxxTest():
    return csnCilab.LoadThirdPartyModule('CxxTest', 'csnCxxTest').cxxTest


def two():
    return csnCilab.LoadThirdPartyModule('Two', 'csnTwo').two


def three():
    return csnCilab.LoadThirdPartyModule('Three', 'csnThree').three


def four():
    return csnCilab.LoadThirdPartyModule('Four', 'csnFour').four


# Toolkit header -------------------------------------------------------------------------
toolkit = csnBuild.Project("TestToolkit", "library")
toolkit.AddCustomCommand(csnCilab.CreateToolkitHeader)
import csnBuild
from guiBridgeLib import csnGuiBridgeLib
from csnGIMIASDef import *

guiBridgeLibWxWidgets = csnBuild.Project("GuiBridgeLibWxWidgets", "library")
guiBridgeLibWxWidgets.AddIncludeFolders(["src"])
guiBridgeLibWxWidgets.AddSources(["src/gblBridgeWxWidgets.cpp", "src/gblBridgeWxWidgets.h"])
guiBridgeLibWxWidgets.AddSources(["src/gblWxTextCtrlValueProxy.cpp"])
guiBridgeLibWxWidgets.AddSources(["src/gblWxTextCtrlValueProxy.h"])
guiBridgeLibWxWidgets.AddProjects([csnGuiBridgeLib.guiBridgeLib, wxWidgets] )
Пример #11
0
    f.write("// Automatically generated file, do not edit.\n")
    f.write("\n")
    if hasattr(toolkit, "context"):
        f.write("#define CISTIB_TOOLKIT_FOLDER \"%s/..\"\n" %
                toolkit.GetSourceRootFolder())
        # check is build folder is public or private
        buildFolder = None
        if hasattr(toolkit.context, "buildFolder"):
            buildFolder = toolkit.context.buildFolder
        else:
            buildFolder = toolkit.context.GetBuildFolder()
        f.write("#define CISTIB_TOOLKIT_BUILD_FOLDER \"%s\"\n" % buildFolder)
    else:
        f.write("#define CISTIB_TOOLKIT_FOLDER \"%s/..\"\n" %
                toolkit.sourceRootFolder)
        f.write("#define CISTIB_TOOLKIT_BUILD_FOLDER \"%s\"\n" %
                toolkit.compiler.GetBuildFolder())

    f.write("\n")
    f.write("#endif // CISTIBTOOLKIT_H\n")
    f.close()


requiredVersion = 2.15

if not hasattr(csnBuild, "version") or csnBuild.version < requiredVersion:
    assert False, "\n\nCSnake version must be at least %d. Please update CSnake\n" % requiredVersion

toolkit = csnBuild.Project("CISTIBToolkit", "library")
toolkit.AddCustomCommand(CreateToolkitHeader)
Пример #12
0
# Used to configure gmCore
import csnBuild
import csnCilab
from csnGIMIASDef import *
import os.path

# Use gmCore and MITK dependency for compatibility
gmCore = csnBuild.Project("gmCore", "library")
gmCore.AddProjects([gmCoreLight, mitkPlugin])
import csnBuild
from csnGIMIASDef import *

gblWxWidgetsTestGUI = csnBuild.Project("gblWxWidgetsTestGUI", "library")
gblWxWidgetsTestGUI.AddIncludeFolders(["src"])
gblWxWidgetsTestGUI.AddSources(
    ["src/gblWxWidgetsTestGUI.cpp", "src/gblWxWidgetsTestGUI.h"])
gblWxWidgetsTestGUI.AddProjects([guiBridgeLibWxWidgets])
gblWxWidgetsTestGUI.AddProjects([cxxTest])

guiBridgeLibWxWidgetsTest = csnBuild.Project("GuiBridgeLibWxWidgetsTest",
                                             "executable")
guiBridgeLibWxWidgetsTest.AddIncludeFolders(["src"])
guiBridgeLibWxWidgetsTest.AddSources(
    ["src/BridgeLibWxWidgetsTest.cpp", "src/BridgeLibWxWidgetsTest.h"])
guiBridgeLibWxWidgetsTest.AddProjects([gblWxWidgetsTestGUI])
Пример #14
0
# Csnake project configuration
import csnBuild
import csnCilab

two = csnBuild.Project("Two", "third party")
two.pathsManager.useFilePath = "%s/Two/UseTwo.cmake" % two.GetBuildFolder()
two.pathsManager.configFilePath = "%s/Two/TwoConfig.cmake" % two.GetBuildFolder(
)

two.AddFilesToInstall(["bin\Debug\TwoLib.dll"], _debugOnly=1, _WIN32=1)
two.AddFilesToInstall(["bin\Release\TwoLib.dll"], _releaseOnly=1, _WIN32=1)
Пример #15
0
# Used to configure coreIO
import csnBuild
from csnGIMIASDef import *
import os.path
import csnProject
#used to access sys,platform. Delete when remove the fura window. Martin 27/03/2009
import sys

gmWidgets = csnBuild.Project("gmWidgets", "dll")
gmWidgets.AddProjects([
  gmProcessors,
  gmFrontEndPlugin,
  guiBridgeLibWxWidgets,
  dynWxAGUILib
])

# GRID
#if (sys.platform == "win32"):
# gmWidgets.AddDefinitions(["-DUSE_GRID_API"] ) 
# gmWidgets.AddProjects([gridAPI])

gmWidgets.SetPrecompiledHeader("gmWidgetsPCH.h")

widgetFolders = gmWidgets.Glob("src/*")
for widgetFolder in widgetFolders:
    if os.path.isdir(widgetFolder):
        gmWidgets.AddSources(["%s/*.cpp" % widgetFolder], _checkExists = 0)
        gmWidgets.AddSources(["%s/*.cxx" % widgetFolder], _checkExists = 0)
        gmWidgets.AddSources(["%s/*.txx" % widgetFolder], _checkExists = 0)
        gmWidgets.AddSources(["%s/*.h" % widgetFolder], _checkExists = 0)
        gmWidgets.AddIncludeFolders([widgetFolder])
Пример #16
0
# Used to configure coreIO
import csnBuild
import csnCilab
from csnGIMIASDef import *
import os.path
import csnProject

gmProcessors = csnBuild.Project("gmProcessors", "dll")

gmProcessors.AddProjects([gmDataHandling, gmKernel])

gmProcessors.SetPrecompiledHeader("gmProcessorsPCH.h")

baseFolders = ["src"]

for baseFolder in baseFolders:
    gmProcessors.AddSources(["%s/*.cxx" % baseFolder], _checkExists=0)
    gmProcessors.AddSources(["%s/*.txx" % baseFolder], _checkExists=0)
    gmProcessors.AddSources(["%s/*.h" % baseFolder], _checkExists=0)
    gmProcessors.AddIncludeFolders([baseFolder])
Пример #17
0
# Used to configure coreIO
import csnBuild
from csnGIMIASDef import *
import os.path
import csnProject

gmFrontEndPlugin = csnBuild.Project("gmFrontEndPlugin", "dll")
gmFrontEndPlugin.AddProjects([gmCommonObjects, baseLib, baseLibNumericData])

gmFrontEndPlugin.SetPrecompiledHeader("gmFrontEndPluginPCH.h")

baseFolders = ["src"]

for baseFolder in baseFolders:
    gmFrontEndPlugin.AddSources(["%s/*.cxx" % baseFolder], _checkExists=0)
    gmFrontEndPlugin.AddSources(["%s/*.txx" % baseFolder], _checkExists=0)
    gmFrontEndPlugin.AddSources(["%s/*.h" % baseFolder], _checkExists=0)
    gmFrontEndPlugin.AddIncludeFolders([baseFolder])
Пример #18
0
import csnBuild
import csnCilab
from csnGIMIASDef import *

guiBridgeLibTest = csnBuild.Project("GuiBridgeLibTest", "executable")
guiBridgeLibTest.AddIncludeFolders(["src"])
guiBridgeLibTest.AddSources(["src/BridgeLibTest.cpp", "src/BridgeLibTest.h"])
guiBridgeLibTest.AddProjects([guiBridgeLib, boost, cxxTest])
		
Пример #19
0
import csnBuild
from csnGIMIASDef import *

guiBridgeLib = csnBuild.Project("GuiBridgeLib", "library")
guiBridgeLib.AddIncludeFolders(["src"])
guiBridgeLib.AddSources(["src/gblBridge.cpp", "src/gblBridge.h"])
guiBridgeLib.AddSources(
    ["src/gblValueConverter.cpp", "src/gblValueConverter.h"])
guiBridgeLib.AddSources(
    ["src/gblMockController.cpp", "src/gblMockController.h"])
guiBridgeLib.AddSources(["src/gblException.h"])
guiBridgeLib.AddProject(boost)
Пример #20
0
# Used to configure CxxTest
import csnBuild

cxxTest = csnBuild.Project("CxxTest", "library")
Пример #21
0
# Csnake project configuration
import csnBuild
import csnCilab

three = csnBuild.Project("Three", "third party")
three.pathsManager.useFilePath = "%s/Three/UseThree.cmake" % three.GetBuildFolder(
)
three.pathsManager.configFilePath = "%s/Three/ThreeConfig.cmake" % three.GetBuildFolder(
)
Пример #22
0
import csnBuild
from csnGIMIASDef import *

guiBridgeLibWxWidgetsTestApp = csnBuild.Project("GuiBridgeLibWxWidgetsTest",
                                                "executable")
guiBridgeLibWxWidgetsTestApp.AddIncludeFolders(["src"])
guiBridgeLibWxWidgetsTestApp.AddSources(["src/*.cpp", "src/*.h"])
guiBridgeLibWxWidgetsTestApp.AddProjects([guiBridgeLibWxWidgets])