同じ CMakeLists.txt ファイルで 32 ビットと 64 ビットのコードをコンパイルしようとしています。これを行う最も簡単な方法は、関数を使用することだと思いました。コンパイルで使用される (静的) ライブラリも CMakeLists.txt ファイルに組み込まれています。ただし、それらを異なるディレクトリに構築しているにもかかわらず、CMake は次のように不満を述べています。
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)
明らかな何かが欠けていると確信していますが、問題がわかりません...