我正在尝试创建然后将dylib添加到项目中.我使用"Cocoa-Library"模板创建它,并将类型设置为"Dynamic"(不确定它应该是动态的还是静态的......).然后我创建了一个名为Test的简单obj-c类,并在其中编写了一个打印出控制台的方法.
我编译并使用生成的.dylib文件并将其放在另一个项目中.现在每当我尝试使用它时,我都会在运行时收到此消息"
dyld: Library not loaded: /usr/local/lib/TESTLib.dylib
Referenced from: /Users/***/Library/Developer/Xcode/DerivedData/TestingDYLIB-axmoocnxbwznoyerfogosumqufxc/Build/Products/Debug/TestingDYLIB.app/Contents/MacOS/TestingDYLIB
Reason: image not found
Run Code Online (Sandbox Code Playgroud)
我还创建了一个Copy File阶段并将目标设置为"Frameworks".我仍然得到同样的错误.我究竟做错了什么?谢谢.
我有一个项目,在子目录中包含opencv的预构建版本。例如:
MyProject
* CMakeLists.txt
* src
* third_party
** CMakeLists.txt
** opencv
****包括
**** lib
我想链接到位于third_party目录中的opencv版本。我的问题是,如何通知CMake链接到lib中的预构建dylib文件,并将标头包含在相关的opencv目录中?
cmake_minimum_required(VERSION 2.8.9)
project (myproject)
include_directories(${CMAKE_SOURCE_DIR}/third_party/opencv/include)
link_directories(${CMAKE_SOURCE_DIR}/third_party/opencv/lib)
file(GLOB SOURCES "*.cpp")
add_executable(myproject ${SOURCES})
target_link_libraries(myproject opencv_calib3d opencv_contrib opencv_core opencv_highgui opencv_features2d opencv_highgui opencv_imgproc)
Run Code Online (Sandbox Code Playgroud) 我编写了一个cmake文件,该文件构建了两个共享库vector3.c和matrix4.c。matrix4依赖于vector3,如果我运行cmake项目并仅构建vector3共享库,则当我添加matrix4库我收到一个cmake错误。没有规则可以成为目标。
文件夹结构
core_math
------CMakeLists.txt
-common/
------common_structs.h
-matrix4/
------CMakeLists.txt
------matrix4/src/matrix4_scalar.c
------matrix4/headers/matrix4_scalar.h
-vector3/
-------CMakeLists.txt
-------vector3/src/vector3_scalar.c
-------vector3/headers/vector3_scalar.h
Run Code Online (Sandbox Code Playgroud)
core_math / CMakeLists.txt
PROJECT(core_math)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
ADD_SUBDIRECTORY(vector3_scalar)
ADD_SUBDIRECTORY(matrix4_scalar)
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY $(CMAKE_BINARY_DIR)/static_lib)
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY $(CMAKE_BINARY_DIR)/shared_lib)
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY $(CMAKE_BINARY_DIR)/bin)
SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)
Run Code Online (Sandbox Code Playgroud)
core_math / vector3 / CMakeLists.txt
PROJECT(vector3_scalar)
SET(CMAKE_MACOSX_RPATH 1)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../common)
SET(HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../common/common_structs.h)
SET(SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/vector3_scalar.c ${HEADER_FILES})
ADD_LIBRARY(vector3_scalar SHARED ${SRC_FILES})
Run Code Online (Sandbox Code Playgroud)
core_math / matrix4_scalar / CMakeLists.txt
PROJECT(matrix4_scalar)
SET(CMAKE_MACOSX_RPATH 1)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../common
${CMAKE_CURRENT_SOURCE_DIR}/../vector3_scalar)
SET(HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../common/common_structs.h
${CMAKE_CURRENT_SOURCE_DIR}/../vector3_scalar/headers/vector3_scalar.h
${CMAKE_CURRENT_SOURCE_DIR}/headers/matrix4_scalar.h)
SET(SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/matrix4_scalar.c ${HEADER_FILES})
ADD_LIBRARY(matrix4_scalar SHARED ${SRC_FILES})
TARGET_LINK_LIBRARIES(matrix4_scalar vector3_scalar)
Run Code Online (Sandbox Code Playgroud)
建立错误
-- Build files have been written to: /Users/blubee/MATH/project/build
Scanning dependencies …Run Code Online (Sandbox Code Playgroud)