나는 사용자가 브라우저 플러그인과 인터페이스하는 데 사용할 수있는 상태 표시 줄 아이콘을 상태 표시 줄에 놓을 Mac OS 용 브라우저 플러그인을 작성 중입니다. XCode 4.4.1에서 FireBreath 1.6 프로젝트를 성공적으로 구축했으며이를 브라우저에 설치할 수 있습니다. 그러나 FireBreath는 C++을 사용하는 반면, Mac OS 용 대다수의 기존 라이브러리는 Objective C로 작성되었습니다.FireBreath 프로젝트에 어떻게 Objective C 코드를 추가합니까?
/Mac/projectDef.make 파일에서 제안 된대로 here 및 Cocoa Framework 및 Foundation Framework를 추가했습니다. 다른 자원에 나는 인터넷에서 찾은 : 내 .mm 파일,하는 .m 파일을 엑스 코드에서 생성 될 새 프로젝트를 기대 prepmac.sh을 reran
target_link_libraries(${PROJECT_NAME}
${PLUGIN_INTERNAL_DEPS}
${Cocoa.framework} # added line
${Foundation.framework} # added line
)
; 그러나, 그들은 무시되고있는 것으로 보인다. 나는 .cpp와 .h 파일 만 볼 수있다. 나는 projectDef.make 파일들에 대한 규칙을 추가하지만 차이 만들 것 같지 않습니다
file (GLOB PLATFORM RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
Mac/[^.]*.cpp
Mac/[^.]*.h
Mac/[^.]*.m #added by me
Mac/[^.]*.mm #added by me
Mac/[^.]*.cmake
)
내가 수동으로 파일을 추가해도를, 내가 컴파일 오류의 시리즈를 얻을.
Parse Issue - Expected unqualified-id
Parse Issue - Unknown type name 'NSString'
Semantic Issue - Use of undeclared identifier 'NSString'
Parse Issue - Unknown type name 'NSString'
...
...
Semantic Issue - Use of undeclared identifier 'aSelectorName'
...
...
Semantic Issue - Use of undeclared identifier 'aClassName'
...
그것은 유사한 오류가있는 약간의 시간이처럼 계속 ...
내가 읽은 바로는, 이러한 오류가 있기 때문에 나타납니다 그 중 약 20 모든 파일 NSObjRuntime.h
파일과 관련이있다 이 프로젝트에 포함 된 것으로 생각되는 Foundation Framework에 대한 의존성에 대해 설명합니다. 나는 또한 Xcode에서 프로젝트를 클릭 해 보았습니다.
나는 다음에 무엇을 시도해야할지 모르겠습니다. 사람들은 C/C++ 코드에서 Objective C를 사용하는 것이 어렵지 않다고 말하지만 XCode와 Objective C를 처음 접하는 것은 혼란을 야기 할 수 있습니다. 이 새로운 플랫폼에서 이것은 나를위한 유일한 날 4입니다.
Objective C 코드를 컴파일하기 위해 XCode를 얻으려면 어떻게해야합니까? 제가 조금 새로운 것을 기억하십시오. 따라서 firebreath 태그에 공통적으로 나타나는 막연한 한 줄 짜기와 달리 상세한 답변을 남겨두면 감사하겠습니다. 나는 내 머리 위로 조금 벗어나지 만,이 장애물을 지나쳐 나를 이겨낼 수 있다면 나는 거기에서부터 나아갈 수있을 것이라고 확신한다.
업데이트 : 프로젝트/MyPlugin/CMakeLists.txt을 편집하고 거기에 너무하는 .m 및 .mm 규칙에 추가
. prepmac.sh를 실행 한 후에는 파일이 프로젝트에 포함되지만 여전히 동일한 컴파일 오류가 발생합니다.
모든 .h 파일과 .mm 파일을 Obj C 코드에서 MyPlugin 루트 폴더로 이동하고 prepmac.sh 파일을 다시 작성했습니다. 문제가 여전히 존재합니다. 같은 컴파일 오류.
그래서 오픈 소스 Objective C 코드를 포함한다면 각 헤더를 편집해야합니까? 나는 이것을 피하기위한 방법으로 Prefix.pch 파일을 사용하는 것에 대해 뭔가 읽었고 Objective C 프로젝트 예제에서 보았지만 아직 FireBreath 프로젝트에 포함시키는 방법을 찾지 못했습니다. +1, 이것은 확실히 올바른 길로 나를 잡을 것입니다! 이것에 기초를 댈 시간을내어 주셔서 감사합니다! 그리고 네가 맞아! CMake는 고통이지만 어디에서 필요한지 볼 수 있습니다. :) – jmort253
아니요 아니요. 오픈 소스 목적의 C 코드를 포함하고 있다면 C++ 파일에 포함될 헤더 파일의 헤더를 포함시키지 않아야합니다. 또는 #ifdef 문을 #ifdef 문으로 감싸서 cpp 파일에 포함되지 않도록하십시오. – taxilian
좋습니다. 이제 이해가가는 것 같습니다. 나는 직장에서 맥을 떠났다. 그래서 나는 이것을 월요일에 시험해 볼 것이다. 다시 한 번 감사드립니다! :) – jmort253