librarymanager/creating.rstsuggests placing library related source code in the src directory. In the example, HelloWorld.cpp would typically contain definitions for forward declarations in HelloWorld.h. If you attempt to run unit tests on any of the definitions in the separate source file, it will fail with linker errors (undefined reference to ... because files in the src directory are not compiled when running unit tests by default.
To overcome this issue, you would have to enable test_build_src which, according to advanced/unit-testing/structure/shared-code.rst, is not recommended.
It would seem that a better option is to place the files in the lib directory inside a module specific directory:
├── examples
│ └── echo
├── lib
│ └── HelloWorld
│ ├── HelloWorld.h
│ └── HelloWorld.cpp
├── library.json
├── src
│ └── main.cpp
└── test
└── test_hello_world.cpp
Based on limited testing, the HelloWorld files must be in a sub-directory of lib, otherwise they wont be found by the Library Dependency Finder.
librarymanager/creating.rstsuggests placing library related source code in thesrcdirectory. In the example,HelloWorld.cppwould typically contain definitions for forward declarations inHelloWorld.h. If you attempt to run unit tests on any of the definitions in the separate source file, it will fail with linker errors (undefined reference to ...because files in thesrcdirectory are not compiled when running unit tests by default.To overcome this issue, you would have to enable
test_build_srcwhich, according toadvanced/unit-testing/structure/shared-code.rst, is not recommended.It would seem that a better option is to place the files in the
libdirectory inside a module specific directory:Based on limited testing, the HelloWorld files must be in a sub-directory of
lib, otherwise they wont be found by the Library Dependency Finder.