Hi All,<div><br></div><div>I am trying to use PETSc working with cmake, following the instructions found on:</div><div><br></div><div>================================================================</div><div><a href="http://www.mcs.anl.gov/petsc/documentation/faq.html#cmake">http://www.mcs.anl.gov/petsc/documentation/faq.html#cmake</a></div>
<div><h3 style="font-family:Times;background-color:rgb(213,234,255)"><a name="cmake" style="color:red">Can I use CMake to build my own project that depends on PETSc?</a></h3><span style="font-family:Times;font-size:medium;background-color:rgb(213,234,255)">Use the FindPETSc.cmake module from </span><a href="https://github.com/jedbrown/cmake-modules/" style="font-family:Times;font-size:medium;background-color:rgb(213,234,255)">this repository</a><span style="font-family:Times;font-size:medium;background-color:rgb(213,234,255)">. See the CMakeLists.txt from </span><a href="https://github.com/jedbrown/dohp" style="font-family:Times;font-size:medium;background-color:rgb(213,234,255)">Dohp</a><span style="font-family:Times;font-size:medium;background-color:rgb(213,234,255)"> for example usage.</span></div>
<div>================================================================</div><div>I still have some difficulty to make it work, and I appreciate it if anyone could give me a hand to resolve the issue.</div><div><br></div><div>
<br></div><div>It is a simple test: </div><div>step 1,</div><div>I simply copied the file <span style="background-color:rgb(255,255,51)">/opt/packages/petsc/petsc-3.3-p5/src/snes/examples/tutorials/ex3.c</span> to my working directory <span style="background-color:rgb(255,255,51)">/projects/CTest/PETSc/ex3/ex3.c</span></div>
<div>I know ex3 is working, as when I compile it under <span style="background-color:rgb(255,255,51)">/opt/packages/petsc/petsc-3.3-p5/src/snes/examples/tutorials/</span> with the command line</div><div><span style="background-color:rgb(153,255,153)">make PETSC_DIR=/opt/packages/petsc/petsc-3.3-p5 PETSC_ARCH=arch-darwin-c-debug ex3</span></div>
<div>I could run ./ex3 and I could get results like:</div><div>===============================================</div><div><div>atol=1e-50, rtol=1e-08, stol=1e-08, maxit=50, maxf=10000</div><div>iter = 0,SNES Function norm 5.41468</div>
<div>iter = 1,SNES Function norm 0.295258</div><div>iter = 2,SNES Function norm 0.000450229</div><div>iter = 3,SNES Function norm 1.38967e-09</div><div>Number of SNES iterations = 3</div><div><br></div><div>Norm of error 1.49751e-10 Iterations 3</div>
</div><div>===============================================</div><div><br></div><div>step 2,</div><div>I copied </div><div>FindPETSc.cmake, </div><div>FindPackageMultipass.cmake, </div><div>ResolveCompilerPaths.cmake, </div>
<div>CorrectWindowsPaths.cmake </div><div>from <a href="https://github.com/jedbrown/cmake-modules/">https://github.com/jedbrown/cmake-modules/</a> to the same working directory <span style="background-color:rgb(255,255,51)">/projects/CTest/PETSc/ex3</span></div>
<div><br></div><div>step 3,</div><div>I copied</div><div>CMakeList.txt from <a href="https://github.com/jedbrown/dohp/blob/master/CMakeLists.txt">https://github.com/jedbrown/dohp/blob/master/CMakeLists.txt</a></div><div>to</div>
<div><span style="background-color:rgb(255,255,51)">/projects/CTest/PETSc/ex3</span></div><div><br></div><div>then modified it as <span style="background-color:rgb(255,102,102)">attached</span>.</div><div><br></div><div>step 4,</div>
<div>under /projects/CTest/PETSc/ex3</div><div><br></div><div>make clean</div><div>rm CMakeCache.txt</div><div>PETSC_DIR=/opt/packages/petsc/petsc-3.3-p5 PETSC_ARCH=arch-darwin-c-debug cmake .</div><div><br></div><div>Here is the print out info I got (note there are two fails there but I ignored them...<span style="background-color:rgb(255,204,153)">hmm...maybe I should have not ignored them?</span>):</div>
<div>=========================================</div><div><div>-- The C compiler identification is GNU</div><div>-- The CXX compiler identification is GNU</div><div>-- Checking whether C compiler has -isysroot</div><div>-- Checking whether C compiler has -isysroot - yes</div>
<div>-- Checking whether C compiler supports OSX deployment target flag</div><div>-- Checking whether C compiler supports OSX deployment target flag - yes</div><div>-- Check for working C compiler: /opt/packages/openmpi/openmpi-1.6.3/gcc-opt/bin/mpicc</div>
<div>-- Check for working C compiler: /opt/packages/openmpi/openmpi-1.6.3/gcc-opt/bin/mpicc -- works</div><div>-- Detecting C compiler ABI info</div><div>-- Detecting C compiler ABI info - done</div><div>-- Checking whether CXX compiler has -isysroot</div>
<div>-- Checking whether CXX compiler has -isysroot - yes</div><div>-- Checking whether CXX compiler supports OSX deployment target flag</div><div>-- Checking whether CXX compiler supports OSX deployment target flag - yes</div>
<div>-- Check for working CXX compiler: /opt/packages/openmpi/openmpi-1.6.3/gcc-opt/bin/mpicxx</div><div>-- Check for working CXX compiler: /opt/packages/openmpi/openmpi-1.6.3/gcc-opt/bin/mpicxx -- works</div><div>-- Detecting CXX compiler ABI info</div>
<div>-- Detecting CXX compiler ABI info - done</div><div>-- petsc_lib_dir /opt/packages/petsc/petsc-3.3-p5/arch-darwin-c-debug/lib</div><div>-- Recognized PETSc install with single library for all packages</div><div>-- Performing Test MULTIPASS_TEST_1_petsc_works_minimal</div>
<div>-- Performing Test MULTIPASS_TEST_1_petsc_works_minimal - <span style="background-color:rgb(255,255,51)">Failed</span></div><div>-- Performing Test MULTIPASS_TEST_2_petsc_works_allincludes</div><div>-- Performing Test MULTIPASS_TEST_2_petsc_works_allincludes - <span style="background-color:rgb(255,255,51)">Failed</span></div>
<div>-- Performing Test MULTIPASS_TEST_3_petsc_works_alllibraries</div><div>-- Performing Test MULTIPASS_TEST_3_petsc_works_alllibraries - Success</div><div>-- PETSc only need minimal includes, but requires explicit linking to all dependencies.  This is expected when PETSc is built with static libraries.</div>
<div>-- Found PETSc: /opt/packages/petsc/petsc-3.3-p5/arch-darwin-c-debug/include;/opt/packages/petsc/petsc-3.3-p5/include </div><div>-- Performing Test dHAVE_PRAGMA_GCC</div><div>-- Performing Test dHAVE_PRAGMA_GCC - Success</div>
<div>-- Configuring done</div><div>-- Generating done</div><div>-- Build files have been written to: /Users/zoul/projects/CTest/PETSc/ex3</div></div><div>==============================================================</div>
<div><br></div><div>step 5</div><div>make</div><div>However I got the error messages:</div><div>==========================================</div><div><div>Scanning dependencies of target MyTest</div><div>[100%] Building C object CMakeFiles/MyTest.dir/ex3.c.o</div>
<div>Linking C executable MyTest</div><div>Undefined symbols for architecture x86_64:</div><div>  "_DMCreateGlobalVector", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_DMDACreate1d", referenced from:</div>
<div>      _main in ex3.c.o</div><div>  "_DMDAGetCorners", referenced from:</div><div>      _main in ex3.c.o</div><div>      _FormFunction in ex3.c.o</div><div>      _FormJacobian in ex3.c.o</div><div>      _PostCheck in ex3.c.o</div>
<div>  "_DMDAGetInfo", referenced from:</div><div>      _FormFunction in ex3.c.o</div><div>      _FormJacobian in ex3.c.o</div><div>  "_DMDAVecGetArray", referenced from:</div><div>      _main in ex3.c.o</div>
<div>      _FormFunction in ex3.c.o</div><div>      _FormJacobian in ex3.c.o</div><div>      _PostCheck in ex3.c.o</div><div>  "_DMDAVecRestoreArray", referenced from:</div><div>      _main in ex3.c.o</div><div>
      _FormFunction in ex3.c.o</div><div>      _FormJacobian in ex3.c.o</div><div>      _PostCheck in ex3.c.o</div><div>  "_DMDestroy", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_DMGetLocalVector", referenced from:</div>
<div>      _FormFunction in ex3.c.o</div><div>  "_DMGlobalToLocalBegin", referenced from:</div><div>      _FormFunction in ex3.c.o</div><div>  "_DMGlobalToLocalEnd", referenced from:</div><div>      _FormFunction in ex3.c.o</div>
<div>  "_DMRestoreLocalVector", referenced from:</div><div>      _FormFunction in ex3.c.o</div><div>  "_KSPGetIterationNumber", referenced from:</div><div>      _PostSetSubKSP in ex3.c.o</div><div>  "_KSPGetPC", referenced from:</div>
<div>      _PostSetSubKSP in ex3.c.o</div><div>  "_KSPSetTolerances", referenced from:</div><div>      _PostSetSubKSP in ex3.c.o</div><div>  "_MatAssemblyBegin", referenced from:</div><div>      _FormJacobian in ex3.c.o</div>
<div>  "_MatAssemblyEnd", referenced from:</div><div>      _FormJacobian in ex3.c.o</div><div>  "_MatCreate", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_MatDestroy", referenced from:</div>
<div>      _main in ex3.c.o</div><div>  "_MatMPIAIJSetPreallocation", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_MatSeqAIJSetPreallocation", referenced from:</div><div>      _main in ex3.c.o</div>
<div>  "_MatSetFromOptions", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_MatSetSizes", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_MatSetValues", referenced from:</div>
<div>      _FormJacobian in ex3.c.o</div><div>  "_PCBJacobiGetSubKSP", referenced from:</div><div>      _PostSetSubKSP in ex3.c.o</div><div>  "_PETSC_COMM_WORLD", referenced from:</div><div>      _main in ex3.c.o</div>
<div>      _Monitor in ex3.c.o</div><div>      _PostCheck in ex3.c.o</div><div>      _PostSetSubKSP in ex3.c.o</div><div>  "_PetscError", referenced from:</div><div>      _main in ex3.c.o</div><div>      _FormInitialGuess in ex3.c.o</div>
<div>      _FormFunction in ex3.c.o</div><div>      _FormJacobian in ex3.c.o</div><div>      _Monitor in ex3.c.o</div><div>      _PostCheck in ex3.c.o</div><div>      _PostSetSubKSP in ex3.c.o</div><div>      ...</div><div>
  "_PetscFinalize", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_PetscInitialize", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_PetscObjectSetName", referenced from:</div>
<div>      _main in ex3.c.o</div><div>  "_PetscOptionsGetInt", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_PetscOptionsGetReal", referenced from:</div><div>      _main in ex3.c.o</div>
<div>  "_PetscOptionsHasName", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_PetscPrintf", referenced from:</div><div>      _main in ex3.c.o</div><div>      _Monitor in ex3.c.o</div><div>
      _PostCheck in ex3.c.o</div><div>      _PostSetSubKSP in ex3.c.o</div><div>  "_PetscViewerDestroy", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_PetscViewerDrawOpen", referenced from:</div>
<div>      _main in ex3.c.o</div><div>  "_SNESCreate", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_SNESDestroy", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_SNESGetIterationNumber", referenced from:</div>
<div>      _main in ex3.c.o</div><div>      _PostCheck in ex3.c.o</div><div>      _PostSetSubKSP in ex3.c.o</div><div>  "_SNESGetKSP", referenced from:</div><div>      _PostSetSubKSP in ex3.c.o</div><div>  "_SNESGetSNESLineSearch", referenced from:</div>
<div>      _main in ex3.c.o</div><div>  "_SNESGetSolution", referenced from:</div><div>      _Monitor in ex3.c.o</div><div>  "_SNESGetTolerances", referenced from:</div><div>      _main in ex3.c.o</div>
<div>  "_SNESLineSearchGetPreCheck", referenced from:</div><div>      _PostCheck in ex3.c.o</div><div>  "_SNESLineSearchGetSNES", referenced from:</div><div>      _PostCheck in ex3.c.o</div><div>      _PostSetSubKSP in ex3.c.o</div>
<div>  "_SNESLineSearchSetPostCheck", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_SNESLineSearchSetPreCheck", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_SNESMonitorSet", referenced from:</div>
<div>      _main in ex3.c.o</div><div>  "_SNESSetFromOptions", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_SNESSetFunction", referenced from:</div><div>      _main in ex3.c.o</div><div>
  "_SNESSetJacobian", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_SNESSolve", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_VecAXPY", referenced from:</div>
<div>      _main in ex3.c.o</div><div>  "_VecCopy", referenced from:</div><div>      _PostCheck in ex3.c.o</div><div>  "_VecDestroy", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_VecDuplicate", referenced from:</div>
<div>      _main in ex3.c.o</div><div>  "_VecNorm", referenced from:</div><div>      _main in ex3.c.o</div><div>  "_VecSet", referenced from:</div><div>      _FormInitialGuess in ex3.c.o</div><div>  "_VecView", referenced from:</div>
<div>      _Monitor in ex3.c.o</div><div>  "_petscstack", referenced from:</div><div>      _main in ex3.c.o</div><div>      _FormInitialGuess in ex3.c.o</div><div>      _FormFunction in ex3.c.o</div><div>      _FormJacobian in ex3.c.o</div>
<div>      _Monitor in ex3.c.o</div><div>      _PreCheck in ex3.c.o</div><div>      _PostCheck in ex3.c.o</div><div>      ...</div><div>ld: symbol(s) not found for architecture x86_64</div><div>collect2: error: ld returned 1 exit status</div>
<div>make[2]: *** [MyTest] Error 1</div><div>make[1]: *** [CMakeFiles/MyTest.dir/all] Error 2</div><div>make: *** [all] Error 2</div></div><div>==========================================</div><div><br></div><div>Thank you,</div>
<div><br></div><div>Ling</div>