0

現在、特定のライブラリ ディレクトリを設定する基本的な Cmake ファイルがあります。ターゲットジェネレーターに基づいて条件付きで初期化したいと思います-私の場合、ジェネレーターは使用するベースディレクトリを決定します(64ビットビジュアルスタジオジェネレーターと通常のビジュアルスタジオジェネレーター)。

私の CMakeLists ファイルは次のようになります。

PROJECT(STAT_AUTH)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

SET(BOOST_DIR "c:\\dev_32\\Boost" CACHE PATH "The Boost Directory Path")
SET(PROTOBUF_DIR "c:\\dev_32\\Protobuf" CACHE PATH "The Protobuf directory Path")
SET(OPENSSL_DIR "c:\\dev_32\\OpenSSL" CACHE PATH "The OpenSSL Directory Path"

変数を条件付きで初期化して、64 ビット ジェネレーターを生成するときに変数が 64 ビット バージョンに設定されるようにするにはどうすればよいですか。「生成」オプションを選択する前に、デフォルト設定が Cmake Gui / ccmake に表示されるはずです。

4

2 に答える 2

4

試す:

if(CMAKE_SIZEOF_VOID_P MATCHES 4)
  SET(BOOST_DIR "c:\\dev_32\\Boost" CACHE PATH "The Boost Directory Path")
  SET(PROTOBUF_DIR "c:\\dev_32\\Protobuf" CACHE PATH "The Protobuf directory Path")
  SET(OPENSSL_DIR "c:\\dev_32\\OpenSSL" CACHE PATH "The OpenSSL Directory Path"
else()
  SET(BOOST_DIR "c:\\dev_64\\Boost" CACHE PATH "The Boost Directory Path")
  SET(PROTOBUF_DIR "c:\\dev_64\\Protobuf" CACHE PATH "The Protobuf directory Path")
  SET(OPENSSL_DIR "c:\\dev_64\\OpenSSL" CACHE PATH "The OpenSSL Directory Path"
endif()
于 2010-11-09T19:02:50.227 に答える
1

Windows の場合、次の構文が適切です。CMAKE_CL_64 は、x86_64 コンパイラを明確に定義します。

if(MSVC)
    if(CMAKE_CL_64)
        SET(BOOST_DIR "c:\\dev_64\\Boost" CACHE PATH "The Boost Directory Path")
        SET(PROTOBUF_DIR "c:\\dev_64\\Protobuf" CACHE PATH "The Protobuf directory Path")
        SET(OPENSSL_DIR "c:\\dev_64\\OpenSSL" CACHE PATH "The OpenSSL Directory Path")
        SET(DEPLOY_DIR "c:\\root_64" CACHE PATH "The Deploy Path for the components built" )
    else()
        SET(BOOST_DIR "c:\\dev_32\\Boost" CACHE PATH "The Boost Directory Path")
        SET(PROTOBUF_DIR "c:\\dev_32\\Protobuf" CACHE PATH "The Protobuf directory Path")
        SET(OPENSSL_DIR "c:\\dev_32\\OpenSSL" CACHE PATH "The OpenSSL Directory Path")
        SET(DEPLOY_DIR "c:\\root_32" CACHE PATH 
            "The Deploy Path for the components built" )
    endif()
endif()
于 2010-11-12T15:32:07.413 に答える