Dear deal.ii developers and user community,

Happy New Year! 🎊

I'm trying to split source code into different directories following to
this documentation
https://www.dealii.org/current/users/cmake_user.html

Unfortunately, I keep getting the following error in linking step between
libmylib.a and main:
"/projappl/project_xxxx/PDE/main.cc:115:undefined reference to
`MyNamespace_mpi::pde_solver<3>::pde_solver(unsigned int)
 /projappl/project_xxxx/PDE/main.cc:116: undefined reference to
`MyNamespace_mpi::pde_solver<3>::run()'
 collect2: error: ld returned 1 exit status
'"
I didn't get this error when all members and class declarations are located
in one source *cc file.

My source layout is
PDE
  |--main.cc
  |--CMakeLists.txt
  |--mylib
        |--CMakeLists.txt
        |--header1.h
        |--header2.h
        |--source.cc
, where header1.h declares MyNamespace_mpi and pde_solver<>, with source.cc
implementing all members in pde_solver<>.
And header2.h defines dirichlet boundary condition functions in namespace
MyNamespace_mpi.

Following documentation, I wrote *PDE/CMakeLists.txt* as
"
cmake_minimum_required(VERSION 3.13.4)

find_package(deal.II 9.3.3 REQUIRED
  HINTS ${DEAL_II_DIR} ../ ../../ $ENV{DEAL_II_DIR}
  )
deal_ii_initialize_cached_variables()
project(cmaketest)

include_directories(mylib)
link_directories(mylib)

add_subdirectory(mylib)

add_executable(mycode main.cc)
deal_ii_setup_target(mycode)
target_link_libraries(mycode mylib)
"
and *PDE/mylib/CMakeLists.txt *as
"
add_library(mylib
  source.cc
  header1.h
  header2.h
  )
deal_ii_setup_target(mylib)
"
I need source directory layout because I have many new functions that must
be added into pde_solver<>.
It seems it is a linking problem. I'm not sure if it is related to the
pre-built deal.ii library.
I hope developers and deal.ii's users can give me suggestions to solve this
issue.

Best,
Tim

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/CAArwj0F8_eYTaQypObDU1MWn92Z%2BnAybzR3K1071tCV-w%3DCEzA%40mail.gmail.com.

Reply via email to