[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