From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daimrod Subject: Re: Org Babel C/C++ Date: Thu, 29 Mar 2012 01:01:07 +0200 Message-ID: <87zkb0qqj0.fsf@gmail.com> References: <87fwcz6vbf.fsf@gmail.com> <87wr67po1v.fsf@gmx.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([208.118.235.92]:33913) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SD2ah-0004yR-5g for emacs-orgmode@gnu.org; Wed, 28 Mar 2012 19:47:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SD1rk-0006Kr-Ms for emacs-orgmode@gnu.org; Wed, 28 Mar 2012 19:01:21 -0400 Received: from plane.gmane.org ([80.91.229.3]:34536) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SD1rk-0006KS-Gb for emacs-orgmode@gnu.org; Wed, 28 Mar 2012 19:01:20 -0400 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1SD1ri-0001A8-Cf for emacs-orgmode@gnu.org; Thu, 29 Mar 2012 01:01:18 +0200 Received: from anantes-556-1-310-218.w2-9.abo.wanadoo.fr ([2.9.254.218]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 29 Mar 2012 01:01:18 +0200 Received: from daimrod by anantes-556-1-310-218.w2-9.abo.wanadoo.fr with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 29 Mar 2012 01:01:18 +0200 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Eric Schulte writes: > Applied, Thanks! > > Daimrod writes: > >> Hi, >> >> I've made a small patch to ob-C.el so it now includes the current >> directory to the list of directories to be searched for header files. >> Without this, I cannot include a local header file because the >> compilation happens in /tmp and thus gcc or g++ doesn't search for >> header files in the directory I currently work. >> >> diff --git a/lisp/ob-C.el b/lisp/ob-C.el >> index f1525aa..4f33fc4 100644 >> --- a/lisp/ob-C.el >> +++ b/lisp/ob-C.el >> @@ -96,15 +96,14 @@ or `org-babel-execute:C++'." >> (progn >> (with-temp-file tmp-src-file (insert full-body)) >> (org-babel-eval >> - (format "%s -o %s %s %s -I \"%s\"" >> + (format "%s -o %s %s %s" >> (cond >> ((equal org-babel-c-variant 'c) org-babel-C-compiler) >> ((equal org-babel-c-variant 'cpp) org-babel-C++-compiler)) >> (org-babel-process-file-name tmp-bin-file) >> (mapconcat 'identity >> (if (listp flags) flags (list flags)) " ") >> - (org-babel-process-file-name tmp-src-file) >> - (file-name-directory (expand-file-name (buffer-file-name)))) "")))) >> + (org-babel-process-file-name tmp-src-file)) "")))) >> ((lambda (results) >> (org-babel-reassemble-table >> (if (member "vector" (cdr (assoc :result-params params))) Hum, I'm quite embarrassed, this doesn't work when the block is executed during an export. I didn't track it down yet, but (buffer-file-name) returns nil during the export probably because the buffer changes. A workaround would be to use the :flags header argument though it's a bit tedious because it doesn't seem possible to eval elisp during the export. i.e. #+BEGIN_SRC cpp :flags -I (file-name-directory (buffer-file-name)) ... #+END_SRC