私は、すべてのターゲットがOS X上でうまく構築されているマルチターゲットCMakeファイルを持っていますが、Ubuntu Linux上でターゲットを構築すると、システムライブラリはtarget_include_directoriesに追加されました。CMakeはLinux(Ubuntu)上でOS Xとは違って "target_include_directories"を使用する
ここにターゲットの例を示します(それぞれのターゲットは似ています)。
set(SOURCE_FILES_TARGET)
set(RELEASE_LIBS iconv m xml2 z icucore resolv curl)
add_executable(TARGET_NAME ${SOURCE_FILES_TARGET)
target_include_directories(TARGET_NAME PRIVATE external_lib1/headers external_lib2/headers)
target_link_libraries(TARGET_NAME ${RELEASE_LIBS})
target_link_libraries(TARGET_NAME ${CMAKE_SOURCE_DIR}/lib1.a)
target_link_libraries(TARGET_NAME ${CMAKE_SOURCE_DIR}/lib2.a)
ライブラリーは、(.laファイルを比較する)は、Linuxのために少し異なるが、未定義の参照エラーで同じ(XML2)の結果であっても、1。また、OS Xでは、 "target_link_libraries"コマンドは上記のように動作し、-lxml2形式で動作します。
私は(それがこのために尋ねたとしてではなく、OS X上で)Linux上で「pthreadsの」ライブラリを追加しようとしました、と私はそれを追加することができた唯一の方法は、しかし、この
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pthread")
ましたすべてのターゲットのグローバル設定です。基本的に、pthreadをtarget_link_librariesに入れると、残りの部分と同様に無視されます。
これらのライブラリをターゲットに追加するにはどうすればよいですか?多分私はOS X側で何かを見逃していて、ちょうどうまくいくでしょうか?
2つの異なる質問があります(ライブラリの問題と '-pthread'リンカーフラグの問題)、質問ごとに1つの質問にしてください。 –
ライブラリの問題は、あなたの問題は何ですか?どのようなエラーが出ますか?冗長なビルド(コマンドが表示されているところ)の出力を表示できますか? –
未定義の参照エラーがある場合、問題は 'target_include_directories()'ではなく 'target_link_libraries()'コマンドから来ます。 – piwi