Tôi đang cố gắng xây dựng tiểu dự án với cmake (đó là không dự án xcode hoặc thậm chí là ứng dụng cho iphone, kết quả là giao diện điều khiển đa nền tảng có thể thực thi được từ C++ lớp trừu tượng, viết bằng Objective-C++)Không thể liên kết khung công tác MacOS với CMake
tôi đang sử dụng hướng dẫn này để liên kết mac khung os: http://www.vtk.org/Wiki/CMake:HowToUseExistingOSXFrameworks
và macro này:
macro(ADD_FRAMEWORK fwname appname)
find_library(FRAMEWORK_${fwname}
NAMES ${fwname}
PATHS ${CMAKE_OSX_SYSROOT}/System/Library
PATH_SUFFIXES Frameworks
NO_DEFAULT_PATH)
if(${FRAMEWORK_${fwname}} STREQUAL FRAMEWORK_${fwname}-NOTFOUND)
MESSAGE(ERROR ": Framework ${fwname} not found")
else()
TARGET_LINK_LIBRARIES(${appname} ${FRAMEWORK_${fwname}})
MESSAGE(STATUS "Framework ${fwname} found at ${FRAMEWORK_${fwname}}")
endif()
endmacro(ADD_FRAMEWORK)
Đây là phần quan trọng trong việc CMA keLists.txt
project(myprojectname)
........
add_executable(mytarget src/mytarget.cpp)
add_framework(CoreMedia mytarget)
add_framework(CoreVideo mytarget)
add_framework(AVFoundation mytarget)
add_framework(Foundation mytarget)
........
Và đó là những gì tôi đã khi cố gắng xây dựng:
WARNING: Target "mytarget" requests linking to directory "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/Frameworks/CoreMedia.framework". Targets may link only to libraries. CMake is dropping the item.
WARNING: Target "mytarget" requests linking to directory "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/Frameworks/CoreVideo.framework". Targets may link only to libraries. CMake is dropping the item.
WARNING: Target "mytarget" requests linking to directory "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/Frameworks/AVFoundation.framework". Targets may link only to libraries. CMake is dropping the item.
WARNING: Target "mytarget" requests linking to directory "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/Frameworks/Foundation.framework". Targets may link only to libraries. CMake is dropping the item.
Nó thực sự tìm thấy tất cả những khuôn khổ, nhưng không thể liên kết, trong đó sản xuất rất nhiều mối liên kết lỗi. Tôi khá chắc chắn rằng đó là lý do bởi vì tôi đã thực hiện một testproj bằng cách sử dụng XCode và nó có cùng một lỗi cho đến khi tôi liên kết tất cả các khung cần thiết.
Khi tôi chỉ cần sử dụng
FIND_LIBRARY(COREMEDIA_LIB CoreMedia)
...
sau đó COREMEDIA_LIB
được thiết lập để NOTFOUND
- những gì đang xảy ra? :/
Tôi googled rất nhiều nhưng không có gì :(Cảm thấy khá nhiều mất có
Vâng, hãy làm việc với 'set (CMAKE_EXE_LINKER_FLAGS" -framework fm1-framework fm2 ... "' Tại sao không phải là http://stackoverflow.com/questions/822404/ làm thế nào để thiết lập-cmake-to-xây dựng-một-ứng dụng-cho-the-iphone cách làm việc? (câu trả lời với macro mà tôi thực sự cố gắng sử dụng) – dreamzor