[Insight-developers] SimpleITK dashboard
Dan Mueller
dan.muel at gmail.com
Tue Jul 26 10:42:16 EDT 2011
Hi Brad,
The SimpleITK dashboard is looking good this morning :D (At least for
Linux and Win32 builds.) Out of interest, what branch are these
machines using? I am using remote stage/next, but still get the
DIRECTIONCOLLAPSETOIDENTITY errors...
Also, are you in charge of the Linux box mi3c-qbert.mayo.edu? I'm just
wondering if it would be possible to install Mono so that C# wrapping
on Linux is covered (unfortunately I don't have access to a Linux
machine for submitting builds at the moment). If you tell me the Linux
flavour, I can provide the few commands needed to install the 2 or 3
Mono-related packages.
Cheers, Dan Mueller
On 25 July 2011 15:49, Bradley Lowekamp <blowekamp at mail.nih.gov> wrote:
> I agree that is starting to be concerning with the size of the library. I am
> still amazed with how much it shrinks when the wrapped language library is
> made. There should be something we can do about this.
> That is great you found a solution. The attached diff is fine. I will place
> it onto the end of the current topic. And hopefully, it'll be ready for
> merging into master!
> Brad
>
> On Jul 25, 2011, at 1:13 AM, Dan Mueller wrote:
>
> Hi Brad,
>
> Debug builds on windows 32-bit systems may not be supported. The library
> just gets too big. You should try to build a release.
>
> Thanks for the info regarding the release build -- I do not encounter
> the "can not seek" error in release mode. However, I notice that
> SimpleITKBasicFilters.lib comes to 700MB, which is getting close to
> 1GB; perhaps something to watch for in the future as SimpleITK grows.
>
> This morning I located the issue with the SimpleITK C# Visual Studio
> 2008 build: it seems VS9 can not handle source dependencies specified
> using a wildcard. I have changed
> Wrapping/CSharpModules/UseCSharp.cmake to glob any wildcard
> expressions (as well as a minor bug fix for FindCSharp when using
> outside of SimpleITK). I have tested the changes using VS9, VS10, and
> make on Unbuntu. Please find the corrected files attached and diff
> below. What is your preferred way of working? Do I push the patch to
> Gerrit?
>
> Cheers, Dan Mueller
>
> ===================================
> diff --git a/Wrapping/CSharpModules/FindCSharp.cmake
> b/Wrapping/CSharpModules/FindCSharp.cmake
> index 690c86e..97551ac 100644
> --- a/Wrapping/CSharpModules/FindCSharp.cmake
> +++ b/Wrapping/CSharpModules/FindCSharp.cmake
> @@ -15,6 +15,9 @@
>
> # TODO: ADD ABILITY TO SELECT WHICH C# COMPILER eg. .NET or Mono (if
> both exist). For the moment, .NET is selected above Mono.
>
> +# Make sure find package macros are included
> +include( FindPackageHandleStandardArgs )
> +
> unset( CSHARP_COMPILER CACHE )
> unset( CSHARP_INTERPRETER CACHE )
> unset( CSHARP_TYPE CACHE )
> ===================================
> diff --git a/Wrapping/CSharpModules/UseCSharp.cmake
> b/Wrapping/CSharpModules/UseCSharp.cmake
> index 9bb8e29..90fefdd 100644
> --- a/Wrapping/CSharpModules/UseCSharp.cmake
> +++ b/Wrapping/CSharpModules/UseCSharp.cmake
> @@ -64,29 +64,43 @@ macro( CSHARP_ADD_PROJECT type name )
> set( refs /reference:System.dll )
> set( sources )
> set( sources_dep )
> +
> if( ${type} MATCHES "library" )
> set( output "dll" )
> elseif( ${type} MATCHES "exe" )
> set( output "exe" )
> endif( ${type} MATCHES "library" )
> +
> + # Step through each argument
> foreach( it ${ARGN} )
> if( ${it} MATCHES "(.*)(dll)" )
> + # Argument is a dll, add reference
> set( refs ${refs} /reference:${it} )
> - else( ${it} MATCHES "(.*)(dll)" )
> + else( )
> + # Argument is a source file
> if( EXISTS ${it} )
> set( sources ${it} ${sources} )
> set( sources_dep ${it} ${sources_dep} )
> - else( EXISTS ${it} )
> - if( EXISTS ${CSHARP_SOURCE_DIRECTORY}/${it} )
> - set( sources ${CSHARP_SOURCE_DIRECTORY}/${it} ${sources} )
> - set( sources_dep ${CSHARP_SOURCE_DIRECTORY}/${it} ${sources_dep}
> )
> - else( EXISTS ${CSHARP_SOURCE_DIRECTORY}/${it} )
> - set( sources ${it} ${sources} )
> - endif( EXISTS ${CSHARP_SOURCE_DIRECTORY}/${it} )
> - endif( EXISTS ${it} )
> - endif ( ${it} MATCHES "(.*)(dll)" )
> - endforeach( it )
> + elseif( EXISTS ${CSHARP_SOURCE_DIRECTORY}/${it} )
> + set( sources ${CSHARP_SOURCE_DIRECTORY}/${it} ${sources} )
> + set( sources_dep ${CSHARP_SOURCE_DIRECTORY}/${it} ${sources_dep} )
> + elseif( ${it} MATCHES "[*]" )
> + # For dependencies, we need to expand wildcards
> + FILE( GLOB it_glob ${it} )
> + set( sources ${it} ${sources} )
> + set( sources_dep ${it_glob} ${sources_dep} )
> + endif( )
> + endif ( )
> + endforeach( )
> +
> + # Check we have at least one source
> + list( LENGTH sources_dep sources_length )
> + if ( ${sources_length} LESS 1 )
> + MESSAGE( SEND_ERROR "No C# sources were specified for ${type} ${name}"
> )
> + endif ()
> + list( SORT sources_dep ${sources_dep} )
>
> + # Perform platform specific actions
> set( csharp_compiler_safe ${CSHARP_COMPILER} )
> if (WIN32)
> string( REPLACE "/" "\\" sources ${sources} )
> @@ -97,15 +111,18 @@ macro( CSHARP_ADD_PROJECT type name )
> string( REPLACE "\\" "/" sources ${sources} )
> endif (WIN32)
>
> + # Add custom target and command
> add_custom_command(
> COMMENT "Compiling C# ${type} ${name}"
> OUTPUT ${name}.${output}
> COMMAND ${csharp_compiler_safe}
> ARGS /t:${type} /out:${name}.${output}
> /platform:${CSHARP_PLATFORM} ${refs} ${sources}
> WORKING_DIRECTORY ${CSHARP_BINARY_DIRECTORY}
> - DEPENDS "${sources_dep}"
> + DEPENDS ${sources_dep}
> )
> - add_custom_target( ${name} ALL
> - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${name}.${output}
> + add_custom_target(
> + ${name} ALL
> + DEPENDS ${name}.${output}
> + SOURCES ${sources_dep}
> )
> endmacro( CSHARP_ADD_PROJECT )
> ===================================
More information about the Insight-developers
mailing list