Hi Kelly, I'm using cmake to migrate from a legacy build system. The source consists of C C++ Fortran and Fortran90. I think -in all- there are 15 binaries.
One of the problems for us is linking. Cmake somehow decides to take compiler X to link executable Y. But in some cases it didn't use the one we expected. So we wrapped add_executable() inside a function that takes an extra argument to control the linker language: function (FEXECUTABLE EXE_NAME LINK_LANG ) [...] add_executable (${EXE_NAME_EXE} ${FILE_LIST_M}) if ( ${LINK_LANG} STREQUAL "CXX" ) set_target_properties (${EXE_NAME_EXE} PROPERTIES LINKER_LANGUAGE CXX) elseif ( ${LINK_LANG} STREQUAL "C" ) set_target_properties (${EXE_NAME_EXE} PROPERTIES LINKER_LANGUAGE C) elseif ( ${LINK_LANG} STREQUAL "Fortran" ) set_target_properties (${EXE_NAME_EXE} PROPERTIES LINKER_LANGUAGE Fortran) else () message( FATAL "Unknown linker language specified for function FEXECUTABLE: ${LINK_LANG" ) endif () [...] endfunction (FEXECUTABLE) I'm not saying that this is proper usage of cmake, but it "works for me (tm)". Perhaps you can try a similar approach with add_library() - myadd_static_library() ? - to indicate if you want to use a 32-bit or 64-bit archiver. Regards, Arjen >-----Original Message----- >From: Hickel, Kelly [mailto:kelly_hic...@bmc.com] >Sent: donderdag 22 juli 2010 13:46 >To: Hickel, Kelly; Verweij, Arjen; cmake@cmake.org >Subject: RE: how to set ar/ranlib flags per target > >Arjen, I saw your response about "wrapping add_library" on the list, but >for some reason it didn't get to my inbox. > >I'm not sure what you mean by "wrapping", are you talking about a code >change, or some sort of macro? So far, I haven't been able to come up >with any way of jamming -X64 into the right place in the ar command. > >Thanks, > > >Kelly Hickel > > > >> -----Original Message----- >> From: cmake-boun...@cmake.org [mailto:cmake-boun...@cmake.org] On >> Behalf Of Hickel, Kelly >> Sent: Wednesday, July 21, 2010 3:46 PM >> To: Verweij, Arjen; cmake@cmake.org >> Subject: Re: [CMake] how to set ar/ranlib flags per target >> >> >> > -----Original Message----- >> > From: cmake-boun...@cmake.org [mailto:cmake-boun...@cmake.org] On >> > Behalf Of Verweij, Arjen >> > Sent: Wednesday, July 21, 2010 3:43 PM >> > To: cmake@cmake.org >> > Subject: Re: [CMake] how to set ar/ranlib flags per target >> > >> > Kelly, >> > >> > I suffer from the same problem and solved it like this: >> > >> > SET(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> -X64 cr <TARGET> <LINK_FLAGS> >> > <OBJECTS>") >> > SET(CMAKE_C_ARCHIVE_APPEND "<CMAKE_AR> -X64 r <TARGET> <LINK_FLAGS> >> > <OBJECTS>") >> > SET(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> -X64 <TARGET>") >> > SET(CMAKE_CXX_ARCHIVE_CREATE ${CMAKE_C_ARCHIVE_CREATE}) >> > SET(CMAKE_CXX_ARCHIVE_APPEND ${CMAKE_C_ARCHIVE_APPEND}) >> > SET(CMAKE_CXX_ARCHIVE_FINISH ${CMAKE_C_ARCHIVE_FINISH}) >> > SET(CMAKE_Fortran_ARCHIVE_CREATE ${CMAKE_C_ARCHIVE_CREATE}) >> > SET(CMAKE_Fortran_ARCHIVE_APPEND ${CMAKE_C_ARCHIVE_APPEND}) >> > SET(CMAKE_Fortran_ARCHIVE_FINISH ${CMAKE_C_ARCHIVE_FINISH}) >> > >> > Does that help you? >> > >> > Regards, >> > Arjen >> >> Thanks Arjen, but I don't believe it does. >> As far as I know that sets the flag globally, I have some targets that >> are 32 bit and some that are 64 bit, so I need to set it per target. >> >> Reading the source, I found STATIC_LIBRARY_FLAGS, which *almost* >works, >> but it puts the flags AFTER the name of the output library, and ar on >> AIX doesn't like that, complains it can't find the object file -X64. >> Apparently the flag must come before the "cr" or "r" commands, e.g. >"ar >> -X64 cr foo.a bar.o baz.o". >> >> Thanks, >> -Kelly >> >> > >> > >-----Original Message----- >> > >From: cmake-boun...@cmake.org [mailto:cmake-boun...@cmake.org] On >> > Behalf >> > >Of Hickel, Kelly >> > >Sent: woensdag 21 juli 2010 21:00 >> > >To: cmake@cmake.org >> > >Subject: [CMake] how to set ar/ranlib flags per target >> > > >> > > >> > >Hello, >> > > >> > >I'm using CMake 2.8.1, and have a problem on AIX similar to this >> one: >> > >http://web.archiveorange.com/archive/v/5y7PkUbT6iizO31eshQa . >> > > >> > >I have the additional complication of needing to build both 32 and >> 64 >> > >bit libraries from the same set of CMake files. >> > > >> > >I've tried a number of things (list below), does anyone have any >> > ideas? >> > > >> > >(Wherever I write CMAKE_C_xyz below, I've also changed >CMAKE_CXX_xyz >> > >at the same time, where I write xyz_ARCHIVE_CREATE, I've also >> changed >> > >xyz_ARCHIVE_APPEND) >> > > >> > >1) Adding the flag to LINK_FLAGS because the definition for >> > > CMAKE_C_ARCHIVE_CREATE appears to include that on the command >> line, >> > > but the generated link.txt input files don't include any >options. >> > >2) Changed the definition for CMAKE_C_ARCHIVE_CREATE in a private >> > > toolchain file that I specify on the command line. By writing >> > > messages that show the value of that variable, I can see my >> change >> > > take, but it appears to get reset to the default before >> processing >> > of >> > > my CMakeLists.txt file begins. >> > >3) Frequently set CMAKE_C_ARCHIVE_CREATE to "<CMAKE_AR> <AR_FLAGS> >r >> > > <TARGET> <LINK_FLAGS> <OBJECTS>", when I did this, I ended up >> with >> > >the >> > > literal string "AR_FLAGS" in the link.txt file, not that useful! >> > > >> > >I'm sure I'm missing something, any hints will be appreciated! >> > > >> > >Thanks, >> > >Kelly >> > > >> > >_______________________________________________ >> > >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 >> >> _______________________________________________ >> 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