[CMake] Trouble setting LIBRARY_OUTPUT_DIRECTORY

Lober, Randy rrlober at sandia.gov
Thu Jun 4 16:41:57 EDT 2009


Mike - thanks for the idea - I have been blowing away my build dir to be safe all this time, i.e.

rm -rf * ; cmake ../distro/zlib-1.2.3 ; make install

Clint - your suggestion solved this problem. The following commands work iff they appeared prior to the add_library/add_executable statements

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)

Note that these commands worked, to be complete I tried them again without the leading "CMAKE_" and those commands (per the online 2.6 docs) do not work, word to the wise.

Thanks everyone, this is a valuable forum.


On 6/4/09 2:17 PM, "Clinton Stimpson" <clinton at elemtech.com> wrote:



How about setting the output dir variables before specifying the
libraries and executables you want.

Clint

Lober, Randy wrote:
> Thanks for the response and suggestion Mike.
>
> I had tried directly setting the value CMAKE_LIBRARY_OUTPUT_DIRECTORY
> once before to no avail but following your idea I tried all three
> again as you list below. Unfortunately, this still does not succeed in
> defining a non-default creation location for my targets. Again, even
> using the commands below no values for the three variables are being
> written into my CMakeCache.txt file.
>
> I have changed the rest of my operations in the file to work with the
> targets from the default location but it is troubling to me that this
> command (seemingly) is not working for me. I will be moving on to much
> more difficult builds soon and I will need this functionality.
>
> If anyone has any other insights I would greatly appreciate them.
>
> Thanks, Randy
>
>
> On 6/4/09 1:22 PM, "Michael Jackson" <mike.jackson at bluequartz.net> wrote:
>
>     # ---------- Setup output Directories -------------------------
>     SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY
>     ${PROJECT_BINARY_DIR}/Bin )
>
>     # --------- Setup the Executable output Directory -------------
>     SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY
>     ${PROJECT_BINARY_DIR}/Bin )
>
>     # --------- Setup the Executable output Directory -------------
>     SET (CMAKE_ARCHIVE_OUTPUT_DIRECTORY
>     ${PROJECT_BINARY_DIR}/Bin )
>
>     Will put every library and executable into a subdirectory called "Bin"
>
>     _________________________________________________________
>     Mike Jackson mike.jackson at bluequartz.net
>     BlueQuartz Software www.bluequartz.net
>     Principal Software Engineer Dayton, Ohio
>
>
>
>     On Jun 4, 2009, at 3:13 PM, Lober, Randy wrote:
>
>     > Hello, I am a new user of cmake and I am running version 2.6-patch 4
>     > on Linux.
>     >
>     > I am setting up a simple project to learn cmake and most everything
>     > has worked just as expected except for my attempts to define where
>     > an output library target is to be created. Here is part of the
>     > CMakeLists.txt
>     >
>     > project(ZLIB C)
>     > SET(CMAKE_INSTALL_PREFIX ${PROJECT_BINARY_DIR}/install)
>     > SET(CMAKE_BUILD_TYPE Release)
>     >
>     > set(CMAKE_C_COMPILER gcc)
>     > add_definitions(-O3)
>     > set(BUILD_SHARED_LIBS ON)
>     > cmake_minimum_required(VERSION 2.6)
>     >
>     > set(ZLIB_PUBLIC_HDRS
>     > zconf.h
>     > zlib.h
>     > )
>     >
>     > set(ZLIB_PRIVATE_HDRS
>     > crc32.h
>     > deflate.h
>     > inffast.h
>     > inffixed.h
>     > inflate.h
>     > inftrees.h
>     > trees.h
>     > zutil.h
>     > )
>     >
>     > set(ZLIB_SRCS
>     > adler32.c
>     > compress.c
>     > crc32.c
>     > deflate.c
>     > inflate.c
>     > infback.c
>     > inftrees.c
>     > inffast.c
>     > gzio.c
>     > trees.c
>     > uncompr.c
>     > zutil.c
>     > )
>     >
>     > set(ZLIB_TEST_SRCS
>     > example.c
>     > )
>     >
>     > set(ZLIB_MAN_SRCS
>     > zlib.3
>     > )
>     >
>     > add_library(z ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
>     > set_target_properties(z PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
>     > set(LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
>     >
>     > add_executable(example ${ZLIB_TEST_SRCS})
>     > set(RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
>     >
>     > add_dependencies(example z)
>     >
>     > target_link_libraries(example z)
>     >
>     > install(TARGETS z DESTINATION lib )
>     > install(FILES ${ZLIB_PUBLIC_HDRS} DESTINATION include)
>     > install(TARGETS example DESTINATION bin)
>     > install(FILES ${ZLIB_MAN_SRCS} DESTINATION share/man/man3)
>     >
>     > I have tried many variations of setting the location for the target
>     > z to be created (and the executable "example"), both the new style
>     > as shown above and the old style (LIBRARY_OUTPUT_PATH), using
>     > variables as above and using absolute paths and nothing works.
>     > libz.so is always dropped directly into my build directory.
>     >
>     > Interesting, if I hand edit the cache file and add the variable
>     > CMAKE_LIBRARY_OUTPUT_DIRECTORY to change the library creation
>     > location it works: why does my cmake configuration not respect the
>     > above commands and write this into the cache file automatically?
>     >
>     > Thanks,
>     >
>     > --Randy
>     >
>     > +
>     > ---------------------------------------------------------------------+
>     > |Randy R. Lober Email:
>     > rrlober at sandia.gov |
>     > |Sandia National Laboratories Systems Engineering, Integration &
>     > Test|
>     > |P.O. Box 5800, MS
>     > 0835 |
>     > |Albuquerque, NM 87185-0835 (505) 845-9353 FAX
>     > 284-1242 |
>     > +
>     > ---------------------------------------------------------------------+
>     > _______________________________________________
>     > Powered by www.kitware.com
>     >
>     > Visit other Kitware open-source projects at
>     http://www.kitware.com/opensource/opensource.html
>     >
>     > Please keep messages on-topic and check the CMake FAQ at:
>     http://www.cmake.org/Wiki/CMake_FAQ
>     >
>     > Follow this link to subscribe/unsubscribe:
>     > http://www.cmake.org/mailman/listinfo/cmake
>
>     _______________________________________________
>     Powered by www.kitware.com
>
>     Visit other Kitware open-source projects at
>     http://www.kitware.com/opensource/opensource.html
>
>     Please keep messages on-topic and check the CMake FAQ at:
>     http://www.cmake.org/Wiki/CMake_FAQ
>
>     Follow this link to subscribe/unsubscribe:
>     http://www.cmake.org/mailman/listinfo/cmake
>
>
>
> Regards,
>
> --Randy
>
> +---------------------------------------------------------------------+
> |Randy R. Lober Email: rrlober at sandia.gov |
> |Sandia National Laboratories Systems Engineering, Integration & Test|
> |P.O. Box 5800, MS 0835 |
> |Albuquerque, NM 87185-0835 (505) 845-9353 FAX 284-1242 |
> +---------------------------------------------------------------------+
> ------------------------------------------------------------------------
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake





Regards,

--Randy

+---------------------------------------------------------------------+
|Randy R. Lober                Email: rrlober at sandia.gov              |
|Sandia National Laboratories  Systems Engineering, Integration & Test|
|P.O. Box 5800, MS 0835                                               |
|Albuquerque, NM 87185-0835    (505) 845-9353 FAX 284-1242            |
+---------------------------------------------------------------------+
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090604/b59d49dc/attachment-0001.htm>


More information about the CMake mailing list