Xcode에서 OpenCL 소스의 파일을 재귀 적으로 포함

Oct 15 2020

내 GPU 장치에서 실행되는 OpenCL 코드를 호출하는 호스트 프로그램을 빌드하려고합니다. cl 소스의 형식은 다음과 같습니다.

#include "skip_mwc.cl"
typedef struct{ uint x; uint c; } mwc64x_state_t;
//blah...

#include지시어를 제거 하고 "skip_mwc.cl"의 내용을이 소스에 직접 복사 / 붙여 넣기하면 부분적으로 "빌드"하고 적어도 몇 가지 오류가 발생하여 내 컴파일러 (clang9 cl 컴파일러)가 최소한 인식 할 수 있음을 보여줍니다. 커널 코드. 으로 #include접근 나는 다음과 같은 오류가 발생합니다 :

Build log::
<program source>:9:10: fatal error: 'skip_mwc.cl' file not found
#include "skip_mwc.cl"

확인한 결과 파일이 검색 경로에 있으므로 Xcode IDE가 .c 또는 .cpp에서와 같이 자동 파일 포함을 수행하기 위해 .cl 파일을 올바르게 인덱싱하지 않는다고 생각합니다.

한 파일에서 다른 파일로 소스를 복사 / 붙여 넣기하는 것을 정말로 피하고 싶습니다. Xcode에 익숙한 누군가가이 문제를 겪고 해결해 준 제안은 매우 환영 받고 필요합니다.

고마워, A

답변

1 ProjectPhysX Oct 16 2020 at 13:10

두 가지 가능한 솔루션 :

  1. 에서 -I include_dir컴파일러 옵션을 설정 clBuildProgram()하십시오 . 이 답변 도 참조하십시오 .
  2. C ++에서 두 파일을 모두 읽고 fstream내용을 문자열로 연결합니다.

또한 스트링 화 매크로 를 통해 OpenCL 코드를 실행 파일에 임베드하는 옵션도 참조하십시오 .