[CMake] ARCHIVE_OUTPUT_DIRECTORY seems to not work

Michael Hertling mhertling at online.de
Tue Nov 16 13:07:40 EST 2010


On 11/16/2010 06:18 PM, Andrea Galeazzi wrote:
> I'm trying to compile a static library named libkernel.a into a custom 
> path. I tried to set ARCHIVE_OUTPUT_DIRECTORY in two ways:
> 1:
> set_property(TARGET PROPERTY ARCHIVE_OUTPUT_DIRECTORY 
> "O:/kernel/${CMAKE_SYSTEM_NAME}/${CMAKE_BUILD_TYPE}")
>  message("library output: ${ARCHIVE_OUTPUT_DIRECTORY}")
> add_library( Kernel STATIC ${SOURCES} )
> 2:
>  set(ARCHIVE_OUTPUT_DIRECTORY 
> "O:/kernel/${CMAKE_SYSTEM_NAME}/${CMAKE_BUILD_TYPE}")
>   message("library output: ${ARCHIVE_OUTPUT_DIRECTORY}")
>   add_library( Kernel STATIC ${SOURCES} )
> 
> but  the file libkernel.a is always created into the build directory. 
> Furthermore in the first case the output of  message("library output: 
> ${ARCHIVE_OUTPUT_DIRECTORY}") is: << library output. >>
> I currently use eclipse CDT - MinGW.
> Maybe I miss something but what?

In 1, you don't specify any targets the property is imposed on; try
SET_PROPERTY(TARGET Kernel PROPERTY ARCHIVE_OUTPUT_DIRECTORY ...) or
SET_TARGET_PROPERTIES(Kernel PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ...)
after the ADD_LIBRARY(Kernel ...). Furthermore, there's no predefined
variable ARCHIVE_OUTPUT_DIRECTORY, thus it turns out to be empty, and
setting this variable in 2 has no effect. Rather, there is a variable
CMAKE_ARCHIVE_OUTPUT_DIRECTORY which initializes the target property
ARCHIVE_OUTPUT_DIRECTORY for all targets, cf. the documentation.

Regards,

Michael


More information about the CMake mailing list