Right now compileAttributes doesn't scan code in subdirectories. This is mostly because for it to be really seamless compileAttributes should run before every build. We therefore want to keep the total execution time <= 50ms.
Since some R packages have *a lot* of code in subdirectories of src we didn't want to get into scanning recursively before every build. On Tue, Mar 10, 2015 at 6:23 PM, Balamuta, James Joseph <balam...@illinois.edu> wrote: > Greetings and Salutations All, > > I’m trying to add structure to the src folder since the amount of files I > have residing in the src directory could be better organized. Note: These > files are made using RcppArmadillo. > > > > E.g. > > > > I’m looking to go from: > > src/ > |-> main.cpp > > |-> testA.cpp > > |-> testA.h > > |-> testB.cpp > > |-> testB.h > > > > To a structure like: > > > src/ > |-> main.cpp > |-> A > > |-> testA.cpp > > |-> testA.h > > |-> B > > |-> testB.cpp > > |-> testB.h > > > > Each file has a function: > > main.cpp => testfunction(x) > > testA.cpp => testfunctionA(x) > > testB.cpp => testfunctionB(x) > > > > To illustrate the issue, I have two repositories > > > > SrcDir: https://github.com/coatless/header_cpp_subdir_code > > SubdirSrc: https://github.com/coatless/header_cpp_code > > > > If I compile without trying to change the folder structure, the package is > made and is able to use without issue. > > > > However, when I attempt to change the folder structure, I was getting a > compiler error that identifies with a linking issue: > > > > main.o:main.cpp:(.text+0x650a): undefined reference to > `testfunctionA(arma::Col<double> const&)' > > I looked at CRANs documentation for a suggested fix and ended up trying to > ensure a link by using the makevars file (see: > http://cran.r-project.org/doc/manuals/r-release/R-exts.html#Using-Makevars) > > > I made the following changes: > > > > The Makevars file update seemed to work as the package then compiled. > > (Exact changes to Makevars.win: > https://github.com/coatless/header_cpp_subdir_code/blob/master/src/Makevars.win > ) > > > > Herein lies the issues: > > > > 1. Any files I’ve written in the subdirectories are no longer > exported to RcppExport.cpp even though they have a // [[Rcpp::export]] tag > preceding the function declaration. > > 2. When I try to call the function in main.cpp (testfunction(x)), I > receive: > > testfunction(2^(1:5)) > > Error in .Call("SubdirSrc_testfunction", PACKAGE = "SubdirSrc", x) : > > "SubdirSrc_testfunction" not available for .Call() for package "SubdirSrc" > > > > > > Any suggestions would be appreciated. > > Sincerely, > > > JJB > > > _______________________________________________ > Rcpp-devel mailing list > Rcpp-devel@lists.r-forge.r-project.org > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel _______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel