<div dir="ltr">This <a href="https://stackoverflow.com/questions/23163075/how-to-compile-an-mpi-included-c-program-using-cmake/45485419#45485419">stackoverflow</a> question might help you.<br></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Aug 21, 2018 at 4:52 AM Florian Lindner <<a href="mailto:mailinglists@xgm.de">mailinglists@xgm.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<br>
Am 20.08.18 um 17:49 schrieb Rafael Sadowski:<br>
> On Mon Aug 20, 2018 at 04:24:07PM +0200, Florian Lindner wrote:<br>
>> Hello,<br>
>><br>
>> copied from a working MPI CMakeLists.txt:<br>
>><br>
>> find_package(MPI REQUIRED)<br>
> <br>
> <a href="https://cmake.org/cmake/help/v3.0/module/FindMPI.html" rel="noreferrer" target="_blank">https://cmake.org/cmake/help/v3.0/module/FindMPI.html</a><br>
> <br>
> MPI_<lang>_FOUND           TRUE if FindMPI found MPI flags for <lang><br>
> MPI_<lang>_COMPILER        MPI Compiler wrapper for <lang><br>
> MPI_<lang>_COMPILE_FLAGS   Compilation flags for MPI programs<br>
> MPI_<lang>_INCLUDE_PATH    Include path(s) for MPI header<br>
> MPI_<lang>_LINK_FLAGS      Linking flags for MPI programs<br>
> MPI_<lang>_LIBRARIES       All libraries to link MPI programs against<br>
> <br>
> Looks like you forgot <lang>.<br>
<br>
Should also work, versions without LANG are deprecated, but still supported.<br>
<br>
But still, I didn't know about the new version and updated my cmake file, but still getting the same error.<br>
<br>
find_package(MPI REQUIRED<br>
  COMPONENTS CXX)<br>
include_directories(${MPI_CXX_INCLUDE_DIRS})<br>
set(COMPILE_OPTIONS  ${COMPILE_FLAGS} ${MPI_CXX_COMPILE_OPTIONS})<br>
set(LINK_FLAGS ${LINK_FLAGS} ${MPI_CXX_LINK_FLAGS})<br>
add_definitions(${MPI_CXX_COMPILE_DEFINTIONS})<br>
<br>
add_executable(StructureSolverParallel<br>
  "StructureSolver_Parallel/structureDataDisplay.cpp"<br>
  "StructureSolver_Parallel/StructureSolver.cpp"<br>
  "StructureSolver_Parallel/structureComputeSolution.cpp")<br>
<br>
target_link_libraries(StructureSolverParallel PUBLIC ${MPI_CXX_LBRARIES})<br>
<br>
<br>
[ 61%] Building CXX object CMakeFiles/StructureSolverParallel.dir/StructureSolver_Parallel/structureComputeSolution.cpp.o<br>
/usr/bin/c++   -I/home/lindnefn/precice/src -I/opt/mpich/include  -Wall -Wextra -Wno-unused-parameter -g   -std=gnu++11 -o CMakeFiles/StructureSolverParallel.dir/StructureSolver_Parallel/structureComputeSolution.cpp.o -c /home/lindnefn/devel/elastictube1d/StructureSolver_Parallel/structureComputeSolution.cpp<br>
<br>
[ 69%] Linking CXX executable StructureSolverParallel<br>
/usr/bin/cmake -E cmake_link_script CMakeFiles/StructureSolverParallel.dir/link.txt --verbose=1<br>
/usr/bin/c++   -Wall -Wextra -Wno-unused-parameter -g   CMakeFiles/StructureSolverParallel.dir/StructureSolver_Parallel/structureDataDisplay.cpp.o CMakeFiles/StructureSolverParallel.dir/StructureSolver_Parallel/StructureSolver.cpp.o CMakeFiles/StructureSolverParallel.dir/StructureSolver_Parallel/structureComputeSolution.cpp.o  -o StructureSolverParallel /home/lindnefn/precice/build/last/libprecice.so<br>
<br>
/usr/bin/ld: CMakeFiles/StructureSolverParallel.dir/StructureSolver_Parallel/StructureSolver.cpp.o: undefined reference to symbol 'MPI_Init'<br>
/usr/bin/ld: /opt/mpich/lib/libmpi.so.12: error adding symbols: DSO missing from command line<br>
<br>
It doesn't seem to put the MPI_CXX_LIBRARIES at the end. Again, just adding -lmpi to the final command does the trick.<br>
<br>
Putting message(${MPI_CXX_LIBRARIES}) after the MPI block returns:<br>
<br>
/opt/mpich/lib/<a href="http://libmpicxx.so/opt/mpich/lib/libmpi.so" rel="noreferrer" target="_blank">libmpicxx.so/opt/mpich/lib/libmpi.so</a><br>
<br>
Any more ideas?<br>
<br>
Thanks,<br>
Florian<br>
<br>
<br>
> <br>
>> include_directories(${MPI_INCLUDE_PATH})<br>
>> set(COMPILE_FLAGS  ${COMPILE_FLAGS} ${MPI_COMPILE_FLAGS})<br>
>> set(LINK_FLAGS ${LINK_FLAGS} ${MPI_LINK_FLAGS})<br>
>><br>
>><br>
>> add_executable(StructureSolverParallel<br>
>>   "StructureSolver_Parallel/structureDataDisplay.cpp"<br>
>>   "StructureSolver_Parallel/StructureSolver.cpp"<br>
>>   "StructureSolver_Parallel/structureComputeSolution.cpp")<br>
>><br>
>> target_link_libraries(StructureSolverParallel PUBLIC ${PRECICE_LIBRARY})<br>
>> target_link_libraries(StructureSolverParallel PUBLIC ${MPI_LBRARIES})<br>
>><br>
>> configuration runs smooth:<br>
>><br>
>> % cmake -DMPI_CXX_COMPILER=/opt/mpich/bin/mpicxx -DMPI_C_COMPILER=/opt/mpich/bin/mpicc . && make               <br>
>> -- The CXX compiler identification is GNU 8.2.0<br>
>> [...]<br>
>> -- Found MPI_CXX: /opt/mpich/lib/libmpicxx.so (found version "3.1") <br>
>> -- Found MPI: TRUE (found version "3.1")  <br>
>><br>
>> make however:<br>
>><br>
>> [ 69%] Linking CXX executable StructureSolverParallel<br>
>> /usr/bin/cmake -E cmake_link_script CMakeFiles/StructureSolverParallel.dir/link.txt --verbose=1<br>
>> /usr/bin/c++   -Wall -Wextra -Wno-unused-parameter -g   CMakeFiles/StructureSolverParallel.dir/StructureSolver_Parallel/structureDataDisplay.cpp.o CMakeFiles/StructureSolverParallel.dir/StructureSolver_Parallel/StructureSolver.cpp.o CMakeFiles/StructureSolverParallel.dir/StructureSolver_Parallel/structureComputeSolution.cpp.o  -o StructureSolverParallel /home/lindnefn/precice/build/last/libprecice.so <br>
>> /usr/bin/ld: CMakeFiles/StructureSolverParallel.dir/StructureSolver_Parallel/StructureSolver.cpp.o: undefined reference to symbol 'MPI_Init'<br>
>> /usr/bin/ld: /opt/mpich/lib/libmpi.so.12: error adding symbols: DSO missing from command line<br>
>><br>
>> when I just take the last command line and -lmpi to it, it works.<br>
>><br>
>> What could be missing there in CMakeLists?<br>
>><br>
>> Thanks,<br>
>> Florian<br>
>><br>
>> -- <br>
>><br>
>> Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
>><br>
>> Please keep messages on-topic and check the CMake FAQ at: <a href="http://www.cmake.org/Wiki/CMake_FAQ" rel="noreferrer" target="_blank">http://www.cmake.org/Wiki/CMake_FAQ</a><br>
>><br>
>> Kitware offers various services to support the CMake community. For more information on each offering, please visit:<br>
>><br>
>> CMake Support: <a href="http://cmake.org/cmake/help/support.html" rel="noreferrer" target="_blank">http://cmake.org/cmake/help/support.html</a><br>
>> CMake Consulting: <a href="http://cmake.org/cmake/help/consulting.html" rel="noreferrer" target="_blank">http://cmake.org/cmake/help/consulting.html</a><br>
>> CMake Training Courses: <a href="http://cmake.org/cmake/help/training.html" rel="noreferrer" target="_blank">http://cmake.org/cmake/help/training.html</a><br>
>><br>
>> Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
>><br>
>> Follow this link to subscribe/unsubscribe:<br>
>> <a href="https://cmake.org/mailman/listinfo/cmake" rel="noreferrer" target="_blank">https://cmake.org/mailman/listinfo/cmake</a><br>
-- <br>
<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Please keep messages on-topic and check the CMake FAQ at: <a href="http://www.cmake.org/Wiki/CMake_FAQ" rel="noreferrer" target="_blank">http://www.cmake.org/Wiki/CMake_FAQ</a><br>
<br>
Kitware offers various services to support the CMake community. For more information on each offering, please visit:<br>
<br>
CMake Support: <a href="http://cmake.org/cmake/help/support.html" rel="noreferrer" target="_blank">http://cmake.org/cmake/help/support.html</a><br>
CMake Consulting: <a href="http://cmake.org/cmake/help/consulting.html" rel="noreferrer" target="_blank">http://cmake.org/cmake/help/consulting.html</a><br>
CMake Training Courses: <a href="http://cmake.org/cmake/help/training.html" rel="noreferrer" target="_blank">http://cmake.org/cmake/help/training.html</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="https://cmake.org/mailman/listinfo/cmake" rel="noreferrer" target="_blank">https://cmake.org/mailman/listinfo/cmake</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr">Best regards<div>Haocheng</div><div><br></div><div>Haocheng LIU</div><div><span style="color:rgb(0,0,0);font-size:12.8px">Kitware, Inc.</span><br style="color:rgb(0,0,0);font-size:12.8px"><span style="color:rgb(0,0,0);font-size:12.8px">R&D Engineer</span><br style="color:rgb(0,0,0);font-size:12.8px"><span style="color:rgb(0,0,0);font-size:12.8px">21 Corporate Drive</span><br style="color:rgb(0,0,0);font-size:12.8px"><span style="color:rgb(0,0,0);font-size:12.8px">Clifton Park, NY 12065-8662</span><br style="color:rgb(0,0,0);font-size:12.8px"><span style="color:rgb(0,0,0);font-size:12.8px">Phone: </span><a href="javascript:void(0);" value="+15188814443" style="color:rgb(17,85,204);font-size:12.8px" target="_blank">518-881-4421</a><br></div></div></div></div></div>