2016-06-17 6 views
1

Windows上でcmakeを使用して静的ライブラリとテストバイナリをリンクする方法がわかりません。私は間違って何をしていますか?ライブラリをcmakeのテストバイナリにリンクできません

プロジェクトの構造は

MyProject 
    - build 
    - include 
    - catch 
     - *.h 
    - MyProject 
     - *.h 
    - src 
    - *.c 
    - test 
    - *.cpp 
    - CMakeLists.txt 

以下のようなもので、cmakeのを使用してVisual Studioのプロジェクトの作成CMakeLists.txt

CMAKE_MINIMUM_REQUIRED (VERSION 3.3.1) 

SET (NAME_LIB  "myproject") 
SET (NAME_TEST "test_myproject") 
SET (PATH_BUILD "${PROJECT_SOURCE_DIR}/build") 
SET (PATH_INCLUDE "${PROJECT_SOURCE_DIR}/include") 
SET (PATH_SOURCE "${PROJECT_SOURCE_DIR}/src") 
SET (PATH_TEST "${PROJECT_SOURCE_DIR}/test") 

FILE (GLOB SOURCES_LIB "${PATH_SOURCE}/*.c" "${PATH_SOURCE}/*.cpp") 
FILE (GLOB SOURCES_TEST "${PATH_TEST}/*.c" "${PATH_TEST}/*.cpp") 

INCLUDE_DIRECTORIES ("${PATH_INCLUDE}") 

ADD_LIBRARY(${NAME_LIB} STATIC "${SOURCES_LIB}") 
ADD_EXECUTABLE (${NAME_TEST} "${SOURCES_TEST}") 
TARGET_LINK_LIBRARIES (${NAME_TEST} "${PATH_BUILD}/${NAME_LIB}") 

は大丈夫行くが、私は使用してソリューションを構築しようとすると、 msbuild次のエラーが表示されます。

(Link target) -> 
    LINK : fatal error LNK1104: cannot open file 'myproject.obj' [D:\Source\myproject\build\test_myproject.vcxproj] 

エラーの代わりに絶対パスのライブラリ名を指定します。

test_myproject.obj : error LNK2019: unresolved external symbol "int __cdecl myproject_parse(char const *)" ([email protected]@[email protected] 
) referenced in function _main [D:\Source\myproject\build\test_myproject.vcxproj] 
D:\Source\myproject\build\Debug\test_myproject.exe : fatal error LNK1120: 1 unresolved externals [D:\Source\myproject\build\test_ 
myproject.vcxproj] 
+0

をコンパイルされていないということです、ターゲット名でライブラリをリンクしてみてください、あなたが混合しているように見えますCとC++であるので、 'myproject_parse'がC++の名前変更の対象でないことを確認する必要があります –

+0

[dumpbin](https://msdn.microsoft.com/en-us/library/20y05bd5.aspx) 'dumpbin/headers myproject.lib'のようなmyproject.libのシンボルを出力し、 'parse'シンボルがリストされていることを確認してください – kirinthos

答えて

1

も多分libのための情報源は、あなたが期待するファイルが含まれていることを確認し、他の可能性は全くシンボルが

TARGET_LINK_LIBRARIES (${NAME_TEST} ${NAME_LIB}) 
+0

絶対パスを使用しないとリンカーエラーが発生します(unresolv外部シンボル)。 –

+0

解決されていない外部記号が診断上よりはるかに良いエラーです。完全なエラーメッセージを教えてください – kirinthos

+0

リンカーエラー –

関連する問題