Thanks for the feedback, Coast. I'm glad you've found my CMake config for GSL useful.
Cheers, Victor On Thu, Dec 15, 2016 at 4:43 AM ƦOB COASTN <[email protected]> wrote: > Greetings Victor and Patrick, > > Regarding the repo: https://github.com/ampl/gsl; > I aim to release some nugets for Appveyor and Visual Studio Online > Continuous Integration. > This wouldn't be possible without these awesome modifications to the > vanilla GSL. > Victor, thanks for making GSL easily compile using MSVC2015 and Cmake. > > Thanks, > Coast > > > > > > > > > > Hi Máté, > > > Alright, since you are not the only one asking for this feature, I > added > > > option GSL_SHARED and implemented generation of a .def file from > headers. > > > This turned out to be pretty easy to do as the list of public headers > for > > > installation is already available and GSL uses very consistent coding > > > conventions. You can find the updated CMake build script in the GitHub > > > repo: https://github.com/ampl/gsl > > > MinGW is doing pretty good job at porting GNU projects to Windows, > although > > > they are using a GNU toolchain, not Microsoft's. Perhaps you can > discuss > > > your ideas there. My main development platform is Linux, so making > projects > > > more Windows-friendly other than to resolve occasional portability > issues > > > is outside of my area of interest. > > > Best regards, > > > Victor > > > On Fri, May 9, 2014 at 1:21 AM, Nagy-Egri Máté Ferenc <address@hidden > > > > wrote: > > > > Hi! > > > > > > > > > > > > Thank you for the update. I figured that the bulk of CMake-izing GSL > would > > > > be the __declspec(dllexport) part, as it is the biggest pain when > porting > > > > linux libraries over to Windows. There is a VS solution available at > > > > > http://gladman.plushost.co.uk/oldsite/computing/gsl-1.16-vc11.zip(although > > > > the server seems to be down now) that does the entire work with 2 > > > > special VS projects inside the solution. One modified the header > files in > > > > order to get the declspec entries (not recommended), the other one > > > > generates a longer .def file that holds function declspec entried > > > > too(recommended). > > > > > > > > > > > > If you would port the gsldef project inside the solution to Cmake, > I’d > > > > know where my first Christmas greetings card would go. 😊 > > > > > > > > > > > > Off-topic: Where would be the place to propose heretic ideas such as > > > > making more GNU projects Windows friendly out-of-the-box? GNU MPFR > would be > > > > another welcome library on the dark side of computing, just to name > one of > > > > many projects. > > > > > > > > > > > > Cheers, > > > > > > > > Máté > > > > > > > > > > > > > > > > > > > > > > > > > > > > Feladó: address@hidden > > > > Elküldve: csütörtök, 2014. május 8. 19:30 > > > > Címzett: Máté Ferenc Nagy-Egri > > > > Másolat: address@hidden > > > > > > > > > > > > > > > > > > > > > > > > Sorry, I thought you were talking about build configuration > directories, > > > > not the install directories. I've added an option > GSL_INSTALL_MULTI_CONFIG > > > > here: > > > > > https://github.com/ampl/gsl/commit/0cf47581583de7ed4ee1cf0a095066af0d2f97d1 > . > > > > When turned ON, this option tells CMake to install libraries under > > > > ${CMAKE_INSTALL_PREFIX}/${CONFIG}. It is OFF by default to follow > standard > > > > conventions. > > > > > > > > > > > > > > > > > > > > As for dynamic (shared) libraries, on Linux and Mac it is as simple > as > > > > adding SHARED to add_library: > > > > > > > > > > > > > > > > > > > > add_library(gsl SHARED ${GSL_SOURCES}) > > > > > > > > > > > > > > > > > > > > On Windows, it is not that simple, because exported symbols should > either > > > > be declared with __declspec(dllexport) or exported via a .def file. > As far > > > > as I can see, GSL only declares variables, but not functions, with > > > > __declspec(dllexport) if GSL_DLL and DLL_EXPORT are defined. And I > don't > > > > see any .def files either. > > > > > > > > > > > > > > > > > > > > > > > > Best regards, > > > > > > > > Victor > > > > > > > > > > > > On Wed, May 7, 2014 at 1:40 AM, Nagy-Egri Máté Ferenc < > > > > address@hidden> wrote: > > > > > > > > > > > > > > > > > > > > The error might be on my side, but this is not what I experience. I > create > > > > VS2013 Project, and even though the CMAKE_INSTALL_PREFIX is set to > > > > C:\Kellekek\GSL I have the libs installed under C:\Kellekek\GSL\lib > for all > > > > configurations. Since GSL is not a library that canonically has > different > > > > names for the different configurations, I always have to create the > Release > > > > and Debug directories by hand in the install location and copy the > libs > > > > over. > > > > > > > > > > > > > > > > > > > > I fetched the CMake file just 2 days ago, it’s not outdated. > > > > > > > > > > > > > > > > > > > > What is the way of specifying whether I want a dynamic library or a > static > > > > one? It seems that the CMake file assumes I want a static lib, but > infact I > > > > prefer dll-s. The option does not come up when configuring with > > > > cmake-gui.exe > > > > > > > > > > > > > > > > > > > > Any insights as to what I’m doing wrong? > > > > > > > > > > > > > > > > > > > > > > > > > > > > Feladó: address@hidden > > > > Elküldve: kedd, 2014. május 6. 19:01 > > > > Címzett: Máté Ferenc Nagy-Egri > > > > Másolat: address@hidden > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi Máté, > > > > > > > > > > > > > > > > I'm glad you liked it. > > > > > > > > > > > > > > > > > > > > As for multi-configuration builds, they are already supported. When > using > > > > a multi-configuration generator such as MSVC, release binaries are > placed > > > > in the Release directory and debug ones are placed in the Debug > directory. > > > > You can also have separate out-of-tree builds with different > settings for > > > > single-configuration CMake generators such as Makefile generator. > > > > > > > > > > > > > > > > > > > > Best regards, > > > > > > > > Victor > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, May 6, 2014 at 12:41 AM, Nagy-Egri Máté Ferenc < > > > > address@hidden> wrote: > > > > > > > > Hi! > > > > > > > > > > > > I have recently posted how nice it would be if NuGet or Chocolatey > would > > > > get some GNU loving, and GSL could be the first one. The CMake file > you > > > > created does show a lot of and great congrats. I managed to build the > > > > libraries just fine, I would have just one comment: > > > > > > > > > > > > It would be nice if the CMakeLists.txt file supported > multi-configuration > > > > builds without seperate install prefixes. For eg. if on Windows, > where > > > > building under lib/Debug and lib/Release is very common, it would be > nice > > > > if I wouldn’t have to always build and create the directory structure > > > > myself, but have the makefile do it for me. > > > > > > > > > > > > > > > > Other than this, fantastic work! > > > > > > > > > > > > Máté > > > > > > > > > > > > > > > > > > > > > > > > Feladó: Patrick Alken > > > > Elküldve: kedd, 2014. április 29. 22:36 > > > > Címzett: address@hidden > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi Victor, > > > > > > > > Thanks it looks like you did a lot of work on this. I was able to > > > > build the current git repository easily with your script. I've added > the > > > > file in contrib/CMakeLists.txt so others can use it if they want. > > > > > > > > Thanks, > > > > Patrick > > > > > > > > On 04/29/2014 02:23 PM, address@hidden wrote: > > > > > Hi All, > > > > > > > > > > I've implemented CMake <http://www.cmake.org/> build support for > GSL. As > > > > > you probably know CMake is a popular alternative to autotools. It > is used > > > > > in many open-source projects including large ones such as KDE, > LLVM and > > > > > Blender (http://en.wikipedia.org/wiki/CMake#Notable_applications). > I > > > > won't > > > > > go into details describing benefits of CMake, there is plenty of > > > > > information on the web, e.g. this article < > > > > http://lwn.net/Articles/188693/>. > > > > > My particular interest was in building GSL with the Visual C++ > compiler. > > > > > > > > > > The CMake build script for GSL is available at > > > > > *https://github.com/ampl/gsl/blob/master/CMakeLists.txt > > > > > <https://github.com/ampl/gsl/blob/master/CMakeLists.txt>*. It's > just a > > > > > single file that needs to be put in the top GSL directory. > > > > > > > > > > I've ported most of the autoconf platform checks to CMake and > implemented > > > > > extraction of various information such as version and lists of > source > > > > files > > > > > from autoconf and automake files. This way the CMake script > requires > > > > little > > > > > maintenance and can co-exist with the current GSL automake build > system. > > > > > Changes to the automake files like adding files and additional > > > > > subdirectories holding convenience libraries don't require changes > to > > > > > CMake files > > > > > unless there is a modification of the project structure. The > config.h > > > > file > > > > > produced by CMake is identical to the one produced by the configure > > > > script > > > > > to make checking the consistency of platform checks easy. > > > > > > > > > > Out-of-tree builds and tests are supported. I've tested the script > on > > > > Linux > > > > > and MacOS X with gcc and on Windows with Visual C++ (both nmake and > > > > Visual > > > > > Studio builds work). > > > > > > > > > > P.S. I sent this email to gsl-discuss some time ago, but it didn't > come > > > > > through, so I'm copying it here. > > > > > > > > > > Best regards, > > > > > Victor > > > > >
