[CMake] "find_package(MPI)" overriding "set(MPIEXEC)" in CmakeList.txt

Yngve Inntjore Levinsen yngve.levinsen at gmail.com
Sun Jan 12 13:59:58 EST 2014


Hi,

So, that means aprun is not in your path? In that case you could try the
same, but give the path where cmake can find aprun:

find_program(MPIEXEC aprun PATHS /path/to/aprun)

(see cmake --help-command find_program for more info)

I tried the same myself (not with aprun but another binary), and it
worked as expected here. Since MPIEXEC is already found, the next
find_program call inside FindMPI.cmake does not search again but use the
binary found (as I understand it).

Cheers,
Yngve

Den 10. jan. 2014 19:11, skrev Pettey . Lucas:
> That did not work. It still brings up the "mpiexec" from the operating system rather than the "aprun" job script submission command. Curiously, manually changing MPIEXEC in the CCMake Advanced screen works and is preserved throughout the configuration and Makefile generation process.
>
> I would really like to set up Cmake so that users don't have to change anything in the Advanced menu. Any other ideas are appreciated.
>
> Thanks
> Lucas
> ________________________________________
> From: cmake-bounces at cmake.org [cmake-bounces at cmake.org] on behalf of Yngve Inntjore Levinsen [yngve.levinsen at gmail.com]
> Sent: Friday, January 10, 2014 5:33 AM
> To: Pettey . Lucas; cmake at cmake.org
> Subject: Re: [CMake] "find_package(MPI)" overriding "set(MPIEXEC)" in   CmakeList.txt
>
> Hi,
>
> Did Den 09. jan. 2014 22:49, skrev Pettey . Lucas:
>> Hello,
>>
>> On a Cray XE6, I am using find_package(MPI REQUIRED) in my CMakeLists.txt. It correctly finds all of the MPI stuff, except that it sets the MPIEXEC to the login node mpiexec command. I would like to override this behavior and set the MPIEXEC command to the "aprun" wrapper, but it is not working. I have tried using set(MPIEXEC "aprun") both before and after the find_package(MPI REQUIRED) in my CMakeLists.txt.
>>
>> Thanks
>> Lucas
> Hi,
>
> Did you try to use find_program? I think this will "override" the
> find_program inside FindMPI.cmake:
>
> find_program(MPIEXEC aprun)
> find_package(MPI REQUIRED)
> message("MPI exec: ${MPIEXEC}")
>
> Cheers,
> Yngve


More information about the CMake mailing list