I'm splitting into a new thread because these are two distinct topics now.

Bill Hoffman wrote:
Will Dicharry wrote:

We do this because we need a quick way to choose our compiler (cmake
chooses GNU on this system by default, and we have to use an MPI wrapper compiler) and because we want those particular Fortran flags when the MPI wrapper compiler is being used. When I use this toolchain file, the Fortran compiler ID is unknown (I failed to see this before, the C and CXX compiler IDs were correct).

However if I comment out the set CMAKE_Fortran_FLAGS line or if I skip
the toolchain file altogether and just pass
-DCMAKE_Fortran_COMPILER=mpxlf90 into the cmake command, the compiler ID
is VisualAge and everything works fine.

Am I misusing the toolchain file capability?

Yes, that should only be used for cross-compiling.

To set the compilers you can set the environment variables FC, CC, and CXX before running CMake.


That's usually the way I do it too when I'm developing. However, our users generally grab the source code for our application and copy it to multiple sites with greatly varying platforms and many compilers to choose from. The reason I chose to use toolchains to do this is it gave me a way to place our officially supported compilers with the right flags in a toolchain file and provide the users with a simply named file that did the right thing on a given machine. This lets them build with something like

$ cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/source/toolchain/host.cmake \
> /path/to/source

rather than needing environment variables. Also, on some platforms we actually are cross compiling since the backend compute nodes use a different OS than the login nodes. Using a toolchain file for everything ensures that my users need to learn only one process. I'd prefer it if we just distributed binaries packaged with CPack, but that's just not possible in our environment.

I'd prefer not to wrap shell scripts around the build system, I'm curious to know if anyone knows of another way to achieve something similar in CMake.

Thanks,
Will


--
Will Dicharry
Software Developer
Stellar Science Ltd Co

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to