[CMake] Subdirectory can't find library made by another subdir

Manh Nguyen Tien manhnt.9 at outlook.com
Tue Nov 27 23:46:54 EST 2018


Hi everyone, I'm having a bug on CMake 3.12 (version and syntax).

Here is my structure.


RootFolder

    CMakeLists.txt (C1)

    library/

        CMakeLists.txt (C2)

    samples/

        CMakeLists.txt (C3)


In my C1, I add subdir library and samples. C2 builds a library target
(LIB).

My problem is that C3 can't find my LIB or my LIB's configuration is not
visible.

This code in C3 doesn't produce any warnings:

target_link_libraries(sample1
  PRIVATE LIB
)


When building sample1, my compiler couldn't find LIB's headers.

I declared those headers for my LIB using target_sources command (PUBLIC
and INTERFACE).

Here is how I create the LIB:

- Add LIB_OBJ library (object library)

- target_sources for header and source files

- target_include_directories

- target_link_libraries for LIB's dependencies

- add a static library LIB_STATIC

- link LIB_STATIC with LIB_OBJ

- create an alias LIB of LIB_STATIC


My full source code is at:
https://gitlab.com/InnerPieceOSS/Saga3D/tree/android

To reproduce:

- Clone project

- Checkout branch android

- mkdir build && cd build

- cmake .. -DBUILD_SAMPLES=ON

- make -j4


Could you help me to identify the problem?
Thank you!

Manh Nguyen Tien.




More information about the CMake mailing list