web-dev-qa-db-ja.com

CMakeLists.txtでLDFLAGSを設定する方法は?

CMAKEでCFLAGSをCMAKE_C_FLAGSで設定します。 LDFLAGSを設定するには、このようなものがありますか?

60
paykoob

それはあなたが望むものに少し依存します:

A)リンクするライブラリを指定する場合は、 find_library を使用してライブラリを検索し、次に link_directories および target_link_libraries を使用します。

もちろん、 add_library(YourLib IMPORTED) を使用して「インポートされた」ライブラリーを適切に追加する、適切な find_package スクリプトを記述することは、しばしば努力する価値があります。特定のプリおよびサフィックスを作成します。その後、単に「YourLib」を参照して、target_link_librariesを使用できます。

B)特定のリンカーフラグを指定したい場合、例えばMinGW-GCCで「-mthreads」または「-Wl、-export-all-symbols」を使用する場合は、 CMAKE_EXE_LINKER_FLAGS を使用できます。また、モジュール用の2つの類似した、ただしドキュメント化されていないフラグ、共有ライブラリまたは静的ライブラリがあります。

CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS
51
André

見る:

CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS
20
tibur

everyリンクにフラグを追加する場合、例: _-fsanitize=address_なら、_CMAKE_*_LINKER_FLAGS_の使用はお勧めしません。それらがすべて設定されていても、OSX上のフレームワークをリンクするとき、およびおそらく他の状況ではフラグを使用しません。代わりにlink_libraries()を使用してください:

_add_compile_options("-fsanitize=address")
link_libraries("-fsanitize=address")
_

これはすべてに有効です。

5
Timmmm

target_link_libraries でリンカーフラグを指定できます。

5
Simon

ライブラリに対するリンクについては、 Andreの答え を参照してください。

リンカーフラグの場合-次の4つのCMake変数:

CMAKE_EXE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS

cm_add_linker_flags マクロの cm を使用すると、さまざまな設定(デバッグ、リリース...)で簡単に操作できます。

4
onqtam