2017-02-20 17 views
1

私は外部ソースからのライブラリのデバッグバージョンを待っています、彼らはすでにリリースバージョンを提供しています。CMakeはビルドリリース時にデバッグライブラリが見つかりません

検索...モジュールを使用してライブラリを検索します。 CMakeLists.txtファイル

optimized;libfoo.a;debug;foo-NOTFOUND 

... 
add_executable(main main.c) 
target_link_libraries(main ${foo}) 

がでビルドを開始:これが今のようなものになり

cmake source/dir -DCMAKE_BUILD_TYPE=Release 

しかし、cmakeのは、依然として行方不明デバッグライブラリ文句。

CMake Error: The following variables are used in this project, but they are set to NOTFOUND. 
Please set them or make sure they are set and tested correctly in the CMake files: 
foo 
    linked by target "main" in directory source/dir 

これは予期された動作ですか? Findモジュールを変更せずにこの問題を回避したり、使用するたびにfoo変数を設定したりすることはできますか?

答えて

0

私は試してみましたが、このエラーを抑制することはできません。責任あるソースコードcmGlobalGenerator::CheckTargetProperties()を見ると、このチェックはINTERFACEリンクライブラリ(これは何もリンクしていないので間違いなく望ましくありません)でスキップされるのはmainです。

しかし、あなたは次のようにエラーを引き起こし名前のプレースホルダーIMPORTEDライブラリーを宣言することができます。CMakeLists.txt次のように問題を再現するために

add_library(foo-NOTFOUND STATIC IMPORTED) 

とセットアップ、私はしました修正をテスト:

cmake_minimum_required(VERSION 3.3) 
project(FooNotFound) 
cmake_policy(SET CMP0057 NEW) 

set(foo "optimized;libfoo.a;debug;foo-NOTFOUND") 
file(WRITE main.c "int main(void) { return 0; }") 

if ("foo-NOTFOUND" IN_LIST foo) 
    add_library(foo-NOTFOUND STATIC IMPORTED) 
endif() 

add_executable(main main.c) 
target_link_libraries(main INTERFACE ${foo}) 
関連する問題