Giter VIP home page Giter VIP logo

cmakecatchtemplate's People

Contributors

ddervs avatar mattclarkson avatar tdowrick avatar thompson318 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

cmakecatchtemplate's Issues

Use VTKs OpenGL2 backend - use VTK 8.0.1 or 6.1.0 on Mac.

I want to test this out specifically for Mac.

  1. According to https://blog.kitware.com/new-opengl-rendering-in-vtk/, this was merged on June 20, 2014, so we would need at least VTK version 6.3. In VTK 6.3, both OpenGL and OpenGL2 backends should be present.
  2. At UCL, Im currently using Qt 5.4.2 for MITK based projects, using a fork of MITK 2015.5.2. But Qt changed their OpenGL significantly in 5.5, and MITK/master now has a minimum Qt 5.6. So, the target is Qt 5.6 or newer.
  3. When I first compiled this project with Qt 5.6, I got issues on Mac, similar to: opencv/opencv#7606, and further googling suggests we may need to specify a minimum Mac SDK or xtools version.
  4. Then, Im also aware that on a Mac, there was this issue PointCloudLibrary/pcl#712 when I was integrating PCL, whereby VTK 7.1 would not build, so I dropped back to 6.1. So the first question is whether VTK 6.3 will compile at all, regardless of the backend. This commit Kitware/VTK@a3e9fc9 suggests it should not. But then maybe a newer version of PCL will work?

Provide OpenGL examples

For my own education, I'm reading https://open.gl/ which uses various libraries to setup OpenGL context, load images etc.

I'm mainly interested in Qt, so, I'd like to provide a few example widgets to illustrate how to do some basic OpenGL within a Qt framework.

Provide pip installable wheels on PyPi

Conversation with Mian:

Currently in Issue #45, Im having trouble with CMake. We are currently using the opencv-python image from:

DOCKER_IMAGE=quay.io/skvark/manylinux1_$PLAT

which is based on manylinux, with a few additions, such as cmake 3.9.0. The build looks like its working, but if you look closely at a build log:
https://travis-ci.com/MattClarkson/CMakeCatchTemplate/jobs/172197403

say, line 599, cmake picks the header files for python 3.7, but picks up python2.4 library from /usr/lib.

So either (a) we need to update cmake, which would require a new docker image, or (b) there is some way to coax cmake 3.9.0 into finding the right library, but as its a docker image, I don't know where that is. Can I run the docker image myself, and look around to find the right library?

Turns out, thanks to emails on [email protected] that on Linux and Mac, you should not link to python, and on Windows, just the lib. The python library should be resolved at run time. So in this instance, no new docker build is required, and no new version of CMake.

Other changes on this branch are just getting the wheels to upload to the right place.

Provide 62304 conformance statement

While this template project provides essentially no functionality yet, as all actual functions are dummy functions, it would be good (as a training exercise for myself) to understand how the code development herein complies or relates to ISO 62304, as ultimately Im interested in medical device development.

Add CMake export facility

Need to ensure that if user does make install then there is CMake config files to enable find_package(MyProject) to work.

Add glog and gflags to SuperBuild

Need a logging (glog) and command line flags (gflags) library.

  • As this is a teaching example, something small, few dependencies, well written.
  • Can't assume people will always want Qt, especially if they are doing command line apps on a headless cluster box.

Integrate Margarida's changes

Working with Margarida to get a separate project running:

  • Make warning when Qt not found
  • Update rename.sh as new files in repo need renaming and rename.sh has a hard coded script.

Add VTK 7.1 to SuperBuild

Another project I'm interested in requires Qt and VTK. Might be useful to others, so adding Qt to SuperBuild.

  • From other projects, my current version is VTK 7.1.0.

Fix Eigen path

So, the Eigen include dir is passed to PCL correctly, but when used from within the main project it is set incorrectly, and points to the installed folder. This is kinda ok, up until the point at which you use anything in the unsupported folder, which, as it contains a Levenberg Marquardt algorithm is actually quite likely in our field.

Add MPI support

Used in our teaching schedule. Assume OpenMPI is pre-compiled. So, do find_package and pass the correct location to other things that need it.

Update rename.sh - to preserve git history

The rename.sh should work on a git repo. Otherwise, derived projects will have no audit trail of which version they forked from.

So, process should be:

  1. Clone CMakeCatchTemplate
  2. Rename top level folder manually
  3. Run rename.sh which does all file moves using '''git mv''', but leaves everything checked out.
  4. User who ran the rename.sh then does 1 commit to indicate that the new project builds nicely.

so the commit log, has ALL the CMakeCatchTemplate commits, and then 1 commit as the project is renamed into a new one.

The user is of course free to squash all previous commits as they see fit, but I would see that as bad practice.

Add Boost Python Example

It might be useful to add python to this repo. Im not talking about compiling the VTK, OpenCV and PCL python bindings. Im just thinking that if you had a python env, with images say as numpy arrays, it may be useful to pass it through to functions in this project, so you can use them in C++ land.

@dzhoshkun then I realised you had similar projects. Any thoughts? @tomdoel

So, it would be a useful template if someone could just write a C++ library, add python interface, and make python module pip installable. Thats what I was thinking of aiming for.

It must be doable. But I would imagine that for ease of deployment, everything in the C++ side should be statically linked, but the compile python module itself must be a .pyd so dynamically linked.

Add OpenMP support

If you build on Linux, and PCL picks up OpenMP, and then your executable doesnt have OpenMP flags set correctly, you get build failures.

Aim here:

  1. Provide a flag so user can select whether to use OpenMP or not.
  2. Boolean flag gets passed to each dependency, so each project can decide how to handle it, and we dont accidentally pass compile time flags to dependencies that DONT need them.
  3. Then in our project, we find_package(OpenMP) and apply settings to the final executable.

Start QML Hello World

I just wanted to understand how to package QML apps under CMake style environment.

Add VL / QML example

Again, testing possibilities. Can VL (visualizationlibrary.org) be used inside QML window? Testing on branch 33-add-VL.

@MicBosi - I might get round to a small demo, like putting a basic triangle / cube, rendered using VL, under a QML scene.

Create our own Docker base image.

For this project, we are currently using the opencv-python version of the manylinux docker image from:

DOCKER_IMAGE=quay.io/skvark/manylinux1_$PLAT

which is based on manylinux, with a few additions, such as cmake 3.9.0.

In the longer term though the bigger question is whether we can make a suitable docker image for anything our team is likely to build, such as VTK, OpenCV, PCL, ITK etc.

In general, for people who clone this repo to make their own project, they can also sort out their own docker image, host it on quay.io and install whatever they like in it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.