Thank you for the explanation Robert.
On Tue, Nov 20, 2018 at 7:34 AM Robert Maynard
wrote:
> You have defined 4 && 5 as public sources so that means that consumers
> of mylib_core and mylib_core will build them. If you want the sources
> to be part of mylib_core the sources should be private, if you want
> the sources to be part of mylib_thing use interface. In general don't
> use PUBLIC with target_sources.
> On Tue, Nov 20, 2018 at 9:19 AM Wesley Smith
> wrote:
> >
> > I have a library target defined as
> >
> >
> > add_library(mylib_core
> > core_source1.cpp
> > core_source2.cpp
> > core_source3.cpp
> > )
> >
> > if(UNIX)
> > target_sources(mylib_core PUBLIC
> > ${CMAKE_CURRENT_SOURCE_DIR}/core_source4.cpp
> > ${CMAKE_CURRENT_SOURCE_DIR}/core_source5.cpp
> > )
> > endif()
> >
> >
> > Then a target that uses it as a dependency:
> >
> >
> > add_library(mylib_thing
> > thing_source1.cpp
> > thing_source2.cpp
> > thing_source3.cpp
> > )
> >
> > target_link_libraries(mylib_thing
> > PUBLIC
> > mylib_core
> > )
> >
> > When building with static libs, I noticed that the sources defined on
> mylib_core with target_sources are building twice.
> >
> >
> > [ 60%] Building CXX object
> mylib_thing/CMakeFiles/mylib_thing.dir/thing_source1.cpp.o
> > [ 60%] Building CXX object
> mylib_thing/CMakeFiles/mylib_thing.dir/thing_source2.cpp.o
> > [ 60%] Building CXX object
> mylib_thing/CMakeFiles/mylib_thing.dir/thing_source3.cpp.o
> > [ 60%] Building CXX object
> mylib_thing/CMakeFiles/mylib_thing.dir/__/mylib_core/core_source4.cpp.o
> > [ 60%] Building CXX object
> mylib_thing/CMakeFiles/mylib_thing.dir/__/mylib_core/core_source5.cpp.o
> >
> > The last two source files were already built when mylib_core was built.
> Why are they being built again under mylib_thing? When these files were
> defined in the add_library() call, this didn't happen. Any thoughts? Is
> it related to the PUBLIC v. PRIVATE enum? If so, what is the setting on
> sources when defining them via add_library()?
> >
> > thanks,
> > wes
> >
> > --
> >
> > 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:
> > https://cmake.org/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:
https://cmake.org/mailman/listinfo/cmake