[CMake] Building third party library as part of CMake project

Nils Gladitz nilsgladitz at gmail.com
Wed Jun 4 17:41:42 EDT 2014


On 04.06.2014 23:11, Truman Ellis wrote:
> I have a top level CMakeLists.txt file which builds a library called 
> Camellia and several executables in subdirectories which link with 
> Camellia. I would like to add a third party library called XDMF as a 
> dependency for Camellia under Camellia/TPL/Xdmf. Luckily, XDMF is 
> already on a CMake build system, but when I use
>
> add_subdirectory(TPL/Xdmf)
>
> and then
>
> add_library(Camellia ${LIB_SOURCES} ${HEADERS})
>
> it builds Camellia in the build/TPL/Xdmf/bin directory rather than 
> build as it does without the add_subdirectory(TPL/Xdmf). Why does 
> adding a subdirectory change the build directory for Camellia, and how 
> do I fix it? Also how do I make sure Camellia is linking with Xdmf 
> once I get that figured out?

It shouldn't normally.
The only way I can think of is that TPL/Xdmf/CMakeLists.txt sets 
CMAKE_RUNTIME_OUTPUT_DIRECTORY as a cache variable.
e.g. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY 
"${CMAKE_CURRENT_BINARY_DIR}/bin" CACHE PATH "docstring")

As a regular variable it wouldn't affect targets created in the parent 
CMakeLists.txt

Nils


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20140604/85bfaa06/attachment.html>


More information about the CMake mailing list