fatal error: 'minimum_ellipsoid/khach.h' file not found
rsjian opened this issue · 7 comments
Very similar to #62, I'm getting an error installing the R interface according to the current instructions:
Lines 10 to 11 in 2271038
error:
In file included from direct_sampling.cpp:19:
In file included from ../../include/volume/volume_sequence_of_balls.hpp:23:
../../include/convex_bodies/vpolytope.h:20:10: fatal error: 'minimum_ellipsoid/khach.h' file not found
#include <minimum_ellipsoid/khach.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~
22 warnings and 1 error generated.
make: *** [direct_sampling.o] Error 1
ERROR: compilation failed for package ‘volesti’
* removing ‘/Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/volesti’
my version info:
R version 4.2.3 (2023-03-15)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Ventura 13.1
hello @vissarion ,
I want to work on this issue please assign me.
hello @vissarion , I want to work on this issue please assign me.
hello @vissarion , this may solve this issue, please look at it
The C++ compiler needs to be told to look at this root path instead of /usr/include
. This can be done by setting the CPLUS_INCLUDE_PATH
env variable. We have to also include LLVM’s normal include path because this is where it should search first.
#Adjust your llvm and CLT include paths to match your setup
export CPLUS_INCLUDE_PATH=/usr/local/opt/llvm/include/c++/v1:/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include
This should fix any fatal error: minimum_ellipsoid/khach.h
file not found errors.
We might still run into linker errors like ld: library not found for -lxxx
The linker also needs to be told to look for libraries in the CommandLineTools/Xcode paths by setting the LIBRARY_PATH
env variable.
export LIBRARY_PATH=$LIBRARY_PATH:/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib
Make sure to add these export
statements to the .bash_rc
, .zshrc
, .bash_profile
, or whatever shell you use, to make these adjusted environment variables available in all terminals.
I found the issue. See:
Line 1 in ac68063
volesti/include/convex_bodies/vpolytope.h
Line 20 in ac68063
The include flag
-I../../external/minimum_ellipsoid
which should be -I../../external
. There also needs to be an additional change fromto
#include "minimum_ellipsoid/khach.h"
I then ran into another issue where colamd.h
was being found in /usr/local/include
instead of src/external/lpsolve/headers/include
so I rewrote the following two lines
Lines 1 to 2 in ac68063
as
LP_SOLVE_CPPFLAGS=-I../../headers/include \
$(CPPFLAGS) \
-I$(R_INCLUDE_DIR) \
Afterwards I followed the following steps to install the package
- running in R console
install.packages(c('rcmdcheck', 'devtools', 'Rcpp', 'RcppEigen', 'BH', 'testthat', 'downloader', 'xfun'))
followed bysetwd("/Users/rjian/volesti/cran_gen")
- running
genCRANpkg.R
- running in R console
setwd("/Users/rjian/volesti/cran_gen/cran_package")
followed bydevtools::install()
The context for running these steps instead of the instructions in the docs
Rscript -e 'Rcpp::compileAttributes()'
R CMD INSTALL --no-multiarch --with-keep.source .
is that
Lines 11 to 12 in ac68063
Rproj_externals
(containing the lp_solve source) from the repo and replaced it with a download in genCRANpkg.R
In retrospect maybe I should've just tried installing from master instead of develop, I'm not even trying to make any changes to the R interface.
Indeed the correct way of building and running the R interface is via genCRANpkg.R
and this should be updated in the docs.
can i also work on this issue
I am able to install the complete interface. I am using Rstudio version 4.22
@vissarion ..The interface is working fine.. I directly installed all the dependencies via RStudio. I am facing no issues in the installation.