Hello. I have a project that has roughly the following structure:
root/dir/
+-- common/
| +-- include/ #.h files
| | +-- Config.h
| +-- src/ #.cpp files
| | +-- Config.cpp
| +-- CMakeLists.txt
|
+-- moduleA/
| +-- include/ #.h files
| +-- src/ #.cpp files
| | +-- app.cpp
| +-- CMakeLists.txt
|
+-- #potentially more modules
|
+-- CMakeLists.txt
So I have a class that is defined in root/dir/common/include/Config.h and
implemented in root/dir/common/src/Config.cpp and then I have a program in
/root/dir/moduleA/src/app.cpp.
app.cpp includes Config.h.
root/dir/CMakeLists.txt only includes all subdirectories:
ADD_SUBDIRECTORIES( common )
ADD_SUBDIRECTORIES( moduleA )
root/dir/common/CMakeLists.txt only has:
PROJECT( COMMON )
INCLUDE_DIRECTORIES (
include/
)
root/dir/moduleA/CMakeLists.txt has:
PROJECT( MODULEA )
INCLUDE_DIRECTORIES (
include/
${COMMON_SOURCE_DIR}/include
)
ADD_EXECUTABLE( app src/app.cpp )
When app.cpp is compiled I get an error complaining that there is an "undefined
reference to Config::Config()".
So (finally) my question is: Since common has no executables, how exactly
should I tell CMake that it needs to compile Config.cpp before moduleA compiles
its executable for app.cpp to get rid of this error?
Do I need to add something to the common CMakeLists.txt file (which would be
the cleanest solution IMHO), and then what exactly is it that I need to add, or
should I somehow indicate that this file needs to be compiled in the moduleA
CMakeLists.txt (which feels a bit wrong since the idea about the common project
is to be referenced by more than one module). I guess I could use ADD_LIBRARY
like in the example, but is that the right thing to do? I mean, basically I
just want to reference the files from my modules, it's not exactly a library,
just some common files. Maybe this is my mistake?
I hope I've made myself understood and I apologize for the length of this
email. Any help would be appreciated.
Kind regards, Stefan Freyr.
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ CMake mailing list [email protected] http://www.cmake.org/mailman/listinfo/cmake
