La compilation de 32 bits et 64 bits

Je suis en train de compiler du code pour 32 et 64 bits dans la même CMakeLists.txt fichier. J'ai pensé que la meilleure façon de le faire serait d'utiliser une fonction. L' (statique) des bibliothèques utilisées dans la compilation sont également intégrées dans le CMakeLists.txt fichier. Toutefois, en dépit de leur construction dans des répertoires différents, CMake reproche:

add_library cannot create target "mylib" because another target with
the same name already exists.  The existing target is a static library
created in source directory "/home/chris/proj".

avec le code de problème:

cmake_minimum_required (VERSION 2.6 FATAL_ERROR)

enable_language(Fortran)
project(myproj)

set(libfolder ${PROJECT_SOURCE_DIR}/lib/)

function(build bit)

  message("Build library")
  set(BUILD_BINARY_DIR ${PROJECT_BINARY_DIR}/rel-${bit})
  set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BUILD_BINARY_DIR}/bin)
  add_library(mylib STATIC ${libfolder}/mylib.for)
  set(CMAKE_Fortran_FLAGS "-m${bit}")

endfunction()

build(32)
build(64)

Je suis sûr que je suis absent quelque chose d'évident, mais ne peut pas voir le problème...

Nous avons eu le même problème avec notre logiciel. Nous avons opté pour la solution de créer une option pour décider si il est en 32 ou 64. Et nous construisons 2 fois notre logiciel, dans chaque mode. Je peux vous donner un exemple sur la façon dont nous le faisons.
double possible de la Compilation de 32 bits vs 64 bits de projet utilisation de CMake

OriginalL'auteur ChrisW | 2013-06-26