Я пытаюсь скомпилировать код для 32 и 64 бит в том же файле CMakeLists.txt. Я думал, что самый простой способ сделать это - использовать функцию. Библиотеки (статические), используемые в компиляции, также встроены в файл CMakeLists.txt. Однако, несмотря на их создание в разных каталогах, CMake жалуется, что:Компиляция 32 и 64 бит
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".
с проблемой кода существа:
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)
Я уверен, что я что-то очевидное отсутствует, но не может видеть проблема ...
У нас была такая же проблема с нашим программным обеспечением. Мы выбрали решение для создания опции, чтобы решить, находится ли она в 32 или 64. И мы создаем в 2 раза наше программное обеспечение в каждом режиме. Я могу привести вам пример того, как мы это делаем. –
Возможный дубликат [Компиляция 32-битного и 64-битного проекта с использованием CMake] (http://stackoverflow.com/questions/4029587/compiling-32-bit-vs-64-bit-project-using-cmake) – mlt