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]
をコンパイルされていないということです、ターゲット名でライブラリをリンクしてみてください、あなたが混合しているように見えますCとC++であるので、 'myproject_parse'がC++の名前変更の対象でないことを確認する必要があります –
[dumpbin](https://msdn.microsoft.com/en-us/library/20y05bd5.aspx) 'dumpbin/headers myproject.lib'のようなmyproject.libのシンボルを出力し、 'parse'シンボルがリストされていることを確認してください – kirinthos