On Fri, May 17, 2019 at 2:55 AM junk email <mlg420sniperxx...@gmail.com> wrote:
> Hello, > > I am trying to understand how to build a subdirectory project that has its > own CMakeLists.txt file already setup. In this case, I am using the open > source library GLFW to help me with some of my OpenGL applications. Here is > a sample directory structure I am working with. > > Root > ├── CMakeLists.txt > ├── MainProject > ├── build > └── glfw-3.3 > > The folder MainProject is where I will be doing all my own development and > has a src, include, and lib folder associated with it. The glfw-3.3 > directory was downloaded from online and has its own CMakeLists.txt file as > mentioned previously. So if I were to build my project from the current > build directory shown here, how should I add the glfw library to it and > also change its target outputs? > > Answers online suggest using ExternalProject_Add(), while others say to > simply add_subdirectory() and then change some of the properties. I want to > be able to have a user run the root CMake file and have the targets be > correctly placed (since users might be on different operating systems). > Either way I have not been able to find an explicit example, perhaps my > Googling skills for CMake are lacking, and any help on this would be > appreciated. Thank you for your time. > > Best, > mlg > > > If Root/CMakeLists.txt is the root of the source directory it's pretty simple. Just use add_subdirectory() as usual. Again I don't follow why GLFW targets would have to change. It builds in the Build directory like everything else. In this case it would be Root/build/glfw-3.3 (assuming Root/build is what was supplied on the command line as something like "cmake -S Root -B Root/build"). For me I downloaded GLFW and put it outside my source tree. Then I just used a relative path to it's location. Because it is outside the source tree I had to specify the build directory to use. But GLFW looked to be pretty simple and there wasn't any changes to its CMakeLists.txt file. I just set some of the options to blank so that they wouldn't be built. This is from the CMakeLists.txt for my directory structure: set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE) set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE) set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) set(GLFW_INSTALL OFF CACHE BOOL "" FORCE) add_subdirectory(../glfw-3.2.1 glfw) ... target_link_libraries(application glfw)
-- 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