Re: [CMake] Static Library output problem
On 11/11/2011 03:42 PM, Romain LEGUAY wrote: > Ok thanks for your quick answers! It works perfectly now! > > Why don't we have just one variables for the library? > > With set_target_properties, we can define for each library the path. Because (1) ADD_LIBRARY() might lack the SHARED/STATIC keyword, and the user can decide which type of library is built via the BUILD_SHARED_LIBS variable, so an ADD_LIBRARY() command can be unalteredly used to build a shared library as well as a static one, and (2) on *nix, the outcome of ADD_LIBRARY(... SHARED ...) is a LIBRARY target whereas on Windows, the DLL part is a RUNTIME target, and the accompanying import library is an ARCHIVE target. For these reasons, the same ADD_LIBRARY() command - i.e., the same target - might generate different types of libraries, so there is a need to specify the respective *_OUTPUT_DIRECTORY individually. Regards, Michael > Le 11/11/2011 15:38, Andreas Pakulat a écrit : >> On 11.11.11 15:18:05, Romain LEGUAY wrote: >>> Hello everyone! >>> First, I need to thank you all the CMake developers for their >>> awesome work!!! >>> >>> I try to build a static and a shared libraries. I set the >>> LIBRARY_OUTPUT_DIRECTORY for each library target like this: >> See the documentation for the LIBRARY_OUTPUT_DIRECTORY, it only applies >> to shared libraries on non-dll platforms (*nix usually). For a static >> library you need to set ARCHIVE_OUTPUT_DIRECTORY. >> >> Andreas -- 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
Re: [CMake] Static Library output problem
Ok thanks for your quick answers! It works perfectly now! Why don't we have just one variables for the library? With set_target_properties, we can define for each library the path. Romain Le 11/11/2011 15:38, Andreas Pakulat a écrit : On 11.11.11 15:18:05, Romain LEGUAY wrote: Hello everyone! First, I need to thank you all the CMake developers for their awesome work!!! I try to build a static and a shared libraries. I set the LIBRARY_OUTPUT_DIRECTORY for each library target like this: See the documentation for the LIBRARY_OUTPUT_DIRECTORY, it only applies to shared libraries on non-dll platforms (*nix usually). For a static library you need to set ARCHIVE_OUTPUT_DIRECTORY. Andreas -- 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
Re: [CMake] Static Library output problem
On 11.11.11 15:18:05, Romain LEGUAY wrote: > Hello everyone! > First, I need to thank you all the CMake developers for their > awesome work!!! > > I try to build a static and a shared libraries. I set the > LIBRARY_OUTPUT_DIRECTORY for each library target like this: See the documentation for the LIBRARY_OUTPUT_DIRECTORY, it only applies to shared libraries on non-dll platforms (*nix usually). For a static library you need to set ARCHIVE_OUTPUT_DIRECTORY. Andreas -- 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
Re: [CMake] Static Library output problem
On 11/11/2011 03:18 PM, Romain LEGUAY wrote: > Hello everyone! > First, I need to thank you all the CMake developers for their awesome > work!!! > > I try to build a static and a shared libraries. I set the > LIBRARY_OUTPUT_DIRECTORY for each library target like this: > > set_target_properties(${sharedLib} PROPERTIES > LIBRARY_OUTPUT_DIRECTORY > > ${PROJECT_BINARY_DIR}/lib/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}/${CMAKE_BUILD_TYPE}) > > set_target_properties(${staticLib} PROPERTIES > LIBRARY_OUTPUT_DIRECTORY > > ${PROJECT_BINARY_DIR}/lib/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}/${CMAKE_BUILD_TYPE}) > > > The shared library is built in the correct directory but the static is > built in PROJECT_BINARY_DIR. > I try to switch the order of the set_target_properties method but no > changes. > I don't why it doesn't work. > > Did anyone have any ideas? > > I attached my CMakeLists.txt file. > > Thanks, > Romain > > PS: I'm on Ubuntu 11.10 64bits, with cmake 2.8.5 (installed from the deb > package). For static libraries, all the variables and properties use the ARCHIVE name (e.g. ARCHIVE_OUTPUT_DIRECTORY). HTH Michael -- 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
[CMake] Static Library output problem
Hello everyone! First, I need to thank you all the CMake developers for their awesome work!!! I try to build a static and a shared libraries. I set the LIBRARY_OUTPUT_DIRECTORY for each library target like this: set_target_properties(${sharedLib} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}/${CMAKE_BUILD_TYPE}) set_target_properties(${staticLib} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}/${CMAKE_BUILD_TYPE}) The shared library is built in the correct directory but the static is built in PROJECT_BINARY_DIR. I try to switch the order of the set_target_properties method but no changes. I don't why it doesn't work. Did anyone have any ideas? I attached my CMakeLists.txt file. Thanks, Romain PS: I'm on Ubuntu 11.10 64bits, with cmake 2.8.5 (installed from the deb package). cmake_minimum_required(VERSION 2.8) project(XmlParser) find_package(CxxTest) IF(CYGWIN) unset(WIN32) ENDIF() # The version number set(XmlParser_VERSION_MAJOR 1) set(XmlParser_VERSION_MINOR 0) set(XmlParser_VERSION_REVISION b) set(XmlParser_VERSION "${XmlParser_VERSION_MAJOR}.${XmlParser_VERSION_MINOR}${XmlParser_VERSION_REVISION}") # configure a header file to pass some of the CMake settings # to the source code configure_file( "${PROJECT_SOURCE_DIR}/include/XmlParserConfig.h.in" "${PROJECT_BINARY_DIR}/include/XmlParserConfig.h" ) include_directories(include ${PROJECT_BINARY_DIR}/include) file(GLOB SOURCE_FILES src/*.cpp include/template/*.hpp ) file(GLOB INCLUDE_FILES include/*.h "${PROJECT_BINARY_DIR}"/include/*.h ) set(xmlParserSharedLib xmlParser) set(xmlParserStaticLib xmlParserStatic) add_library(${xmlParserStaticLib} STATIC ${SOURCE_FILES}) add_library(${xmlParserSharedLib} SHARED ${SOURCE_FILES}) set_target_properties(${xmlParserStaticLib} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}/${CMAKE_BUILD_TYPE}) set_target_properties(${xmlParserSharedLib} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}/${CMAKE_BUILD_TYPE}) #install(TARGETS ${xmlParserSharedLib} ${xmlParserStaticLib} DESTINATION lib) #install(FILES ${INCLUDE_FILES} DESTINATION include) if(CXXTEST_FOUND) set(xmlParser_test_include "${PROJECT_SOURCE_DIR}/unitary-test/include") set(xmlParser_test_src "unitary-test/src") set(xmlParser_test_build "unitary-test/build") set(CXXTEST_USE_PYTHON TRUE) include_directories(${CXXTEST_INCLUDE_DIR}) set(XmlElementTest ${xmlParser_test_build}/XmlElementTest) CXXTEST_ADD_TEST(${XmlElementTest} ${xmlParser_test_src}/XmlElementTest.cpp ${xmlParser_test_include}/XmlElementTest.h) target_link_libraries(${XmlElementTest} ${xmlParserStaticLib}) endif() -- 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