I am trying to add directories for #include directives and for linking libraries. The below text is my make.lisp file for building my code:
(require 'cmp) (setf c:*user-cc-flags* "-DWXUSINGDLL") (setf c::*ecl-include-directory* "C:/Dave/wx/include,C:/Dave/wx/include/msvc") (setf c::*ecl-library-directory* "C:/Dave/wx/lib/vc_x64_dll") (compile-file "wx.lisp" :system-p t) (c:build-fasl "wx" :lisp-files '("wx.obj"))
Although
(setf c:*user-cc-flags* "-DWXUSINGDLL")
Is working as evidenced by the argument list to run-program, there is no evidence that the include or library directories are being used at all. Moreover, the #include directive in the wx.lisp code cannot find the specified header file.
How are c::*ecl-include-directory* and c::*ecl-library-directory* intended to be used?
Dave
Dear Dave,
c::*ecl-include-directory* tells ECL where to find ECL's own header files. Likewise, c::*ecl-library-directory* is the location of the libecl.so.
For including your own header files, please use c:*user-cc-flags*, for example as
(setf c:*user-cc-flags* "-DWXUSINGDLL -IC:/Dave/wx/include -IC:/Dave/wx/include/msvc")
Additional linker flags and additional libraries to link in can be specified in c:*user-linker-flags* and c:*user-linker-libs* respectively, e.g.
(setf c:*user-linker-flags* "-LC:/Dave/wx/lib/vc_x64_dll" c:*user-linker-libs* "-lsome_shared_library")
Note that if you are running an ECL release older than 23.9.9, both types of linker flags belong in c:*user-ld-flags*, although that variable is now deprecated because it can lead to linker flags being put in the wrong position in the linker command line.
Best regards,
Marius Gerbershagen
Am 02.04.24 um 19:12 schrieb dave@synergy.org:
I am trying to add directories for #include directives and for linking libraries. The below text is my make.lisp file for building my code:
(require 'cmp) (setf c:*user-cc-flags* "-DWXUSINGDLL") (setf c::*ecl-include-directory* "C:/Dave/wx/include,C:/Dave/wx/include/msvc") (setf c::*ecl-library-directory* "C:/Dave/wx/lib/vc_x64_dll") (compile-file "wx.lisp" :system-p t) (c:build-fasl "wx" :lisp-files '("wx.obj"))
Although
(setf c:*user-cc-flags* "-DWXUSINGDLL")
Is working as evidenced by the argument list to run-program, there is no evidence that the include or library directories are being used at all. Moreover, the #include directive in the wx.lisp code cannot find the specified header file.
How are c::*ecl-include-directory* and c::*ecl-library-directory* intended to be used?
Dave
This makes complete sense. Thank you! Dave
-----Original Message----- From: Marius Gerbershagen marius.gerbershagen@gmail.com Sent: Thursday, April 4, 2024 10:58 AM To: dave@synergy.org; ecl-devel@common-lisp.net Subject: Re: Adding include and library directories
Dear Dave,
c::*ecl-include-directory* tells ECL where to find ECL's own header files. Likewise, c::*ecl-library-directory* is the location of the libecl.so.
For including your own header files, please use c:*user-cc-flags*, for example as
(setf c:*user-cc-flags* "-DWXUSINGDLL -IC:/Dave/wx/include -IC:/Dave/wx/include/msvc")
Additional linker flags and additional libraries to link in can be specified in c:*user-linker-flags* and c:*user-linker-libs* respectively, e.g.
(setf c:*user-linker-flags* "-LC:/Dave/wx/lib/vc_x64_dll" c:*user-linker-libs* "-lsome_shared_library")
Note that if you are running an ECL release older than 23.9.9, both types of linker flags belong in c:*user-ld-flags*, although that variable is now deprecated because it can lead to linker flags being put in the wrong position in the linker command line.
Best regards,
Marius Gerbershagen
Am 02.04.24 um 19:12 schrieb dave@synergy.org:
I am trying to add directories for #include directives and for linking libraries. The below text is my make.lisp file for building my code:
(require 'cmp) (setf c:*user-cc-flags* "-DWXUSINGDLL") (setf c::*ecl-include-directory* "C:/Dave/wx/include,C:/Dave/wx/include/msvc") (setf c::*ecl-library-directory* "C:/Dave/wx/lib/vc_x64_dll") (compile-file "wx.lisp" :system-p t) (c:build-fasl "wx" :lisp-files '("wx.obj"))
Although
(setf c:*user-cc-flags* "-DWXUSINGDLL")
Is working as evidenced by the argument list to run-program, there is no evidence that the include or library directories are being used at all. Moreover, the #include directive in the wx.lisp code cannot find the specified header file.
How are c::*ecl-include-directory* and c::*ecl-library-directory* intended to be used?
Dave