I am not sure, but you should write the cmake target-oriented(instead of using variables). So you shouldn’t use `include_directories` either. It should be written:
# # Build static library add_library(database database.cpp database.h) target_compile_features(database PUBLIC cxx_defaulted_functions) target_include_directories(database PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(database record spectogram) And record and spectogram should be written in a similar fashion. By using targets, you don’t have to worry about the targets being defined yet, so the superproject doesn’t need to order the `add_subdirectory` calls(it can even support circular dependencies). Another thing, you shouldn’t declare another project unless you planning on making it standalone. This means it should find the dependencies through `find_package` and be installable with its usage requirements, which would be written like this: project(database) find_package(record) find_package(spectogram) # # Build static library add_library(database database.cpp database.h) target_compile_features(database PUBLIC cxx_defaulted_functions) target_include_directories(database PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>) target_link_libraries(database record spectogram) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/database.h DESTINATION include) install(TARGETS database EXPORT database-targets RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib INCLUDES DESTINATION include ) install(EXPORT database-targets FILE database-targets.cmake DESTINATION lib/cmake/database ) file(WRITE "${PROJECT_BINARY_DIR}/database-config.cmake" " include(CMakeFindDependencyMacro) find_dependency(record) find_dependency(spectogram) include(\"\${CMAKE_CURRENT_LIST_DIR}/database-targets.cmake\") ") write_basic_package_version_file("${PROJECT_BINARY_DIR}/database-config-version.cmake" VERSION 1.0 COMPATIBILITY AnyNewerVersion ) install(FILES "${PROJECT_BINARY_DIR}/database-config.cmake" "${PROJECT_BINARY_DIR}/database-config-version.cmake" DESTINATION lib/cmake/database ) The dependencies can be found either through find_package for standalone or through add_subdirectory in the superproject by overriding find_package. The effective cmake talk describes how such setup works, here: https://www.youtube.com/watch?v=bsXLMQ6WgIk <https://www.youtube.com/watch?v=bsXLMQ6WgIk> Or you can use a single project for all components. > On Nov 12, 2017, at 8:04 AM, Carlton Banks <nofl...@gmail.com> wrote: > > I am not sure I understand why I am having this problem.. > but cmake seem to have some problems with finding the header file located in > a different project. > > tree view of my system: https://pastebin.com/AvydEbeW > > I’ve included the directory to the project which header files I am interested > in, and also added the path in my > target_inlcude_directories. The problems is my database.h cannot see record.h. > > database/CmakeLists.txt: > > https://pastebin.com/DpcMjtMa > > The weird part is that it sometimes is able to compile, and other times it > get stuck with this not able to find the header? > > what could the problem be? > > > > > -- > > Powered by www.kitware.com > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.org/Wiki/CMake_FAQ > > Kitware offers various services to support the CMake community. For more > information on each offering, please visit: > > CMake Support: http://cmake.org/cmake/help/support.html > CMake Consulting: http://cmake.org/cmake/help/consulting.html > CMake Training Courses: http://cmake.org/cmake/help/training.html > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/cmake
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake