Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable building Python bindings on Windows #19

Merged
merged 28 commits into from
Oct 29, 2023

Conversation

sadsimulation
Copy link
Contributor

Try to debug why gtsam Python bindings don't build as mentioned in #10.

@conda-forge-webservices
Copy link

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@Tobias-Fischer
Copy link
Contributor

Hi @traversaro - sorry to bother you. We are running out of heap space here. I already set ninja -j1. For almost all heap space errors here on conda-forge, you seem to be the one knowing how to potentially avoid them. Do you have any other ideas what we could do? Do you think add_compile_options(/Zm200) could work?

@traversaro
Copy link
Contributor

Hi @traversaro - sorry to bother you. We are running out of heap space here. I already set ninja -j1. For almost all heap space errors here on conda-forge, you seem to be the one knowing how to potentially avoid them. Do you have any other ideas what we could do? Do you think add_compile_options(/Zm200) could work?

I never faced a problem like this. I see that Zm is related to precompile headers, if that does not work we could look into disabling pre-compiled headers?

@Tobias-Fischer
Copy link
Contributor

I think I misread the doc in https://learn.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/fatal-error-c1060?view=msvc-170 - the /Zm flag is only helpful if there are also errors C1076 and C3859 which we don't have here. I am not sure about precompiled headers - it's using pybind11 for the Python bindings. Not sure what to do next, we could try if it builds locally on a more powerful machine?

@Tobias-Fischer
Copy link
Contributor

@sadsimulation - if you’re interested in this, could you try building locally and see if you are running into issues?

@sadsimulation
Copy link
Contributor Author

@sadsimulation - if you’re interested in this, could you try building locally and see if you are running into issues?

Hi I'd love to try this out but I'm not sure where to start. Is it as simple as cloning the repo and running conda-build gtsam in the recipe folder?

@Tobias-Fischer
Copy link
Contributor

Yes, clone this repo/PR, then conda mambabuild . -m ../.ci_support/win_64_numpy1.23python3.11.____cpython.yaml will do the trick.

@sadsimulation
Copy link
Contributor Author

Yes, clone this repo/PR, then conda mambabuild . -m ../.ci_support/win_64_numpy1.23python3.11.____cpython.yaml will do the trick.

Thanks for the quick reply, is there a specific VisualStudio version required? I see references to VS2019 but VS2022 seems to be available.

@sadsimulation
Copy link
Contributor Author

sadsimulation commented Oct 24, 2023

Okay this time I did not run out of memory at the same place, however peak memory usage was 6GB, not sure what the azure pipeline provides..

It does however now fail due to undefined references when linking the .pyd , this looks similar to borglab/gtsam#1261

FAILED: python/gtsam/gtsam.cp311-win_amd64.pyd
cmd.exe /C "cd . && %BUILD_PREFIX%\Library\bin\cmake.exe -E vs_link_dll --intdir=python\CMakeFiles\gtsam_py.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\mt.exe --manifests  -- C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1429~1.301\bin\HostX64\x64\link.exe /nologo python\CMakeFiles\gtsam_py.dir\gtsam.cpp.obj python\CMakeFiles\gtsam_py.dir\base.cpp.obj python\CMakeFiles\gtsam_py.dir\inference.cpp.obj python\CMakeFiles\gtsam_py.dir\discrete.cpp.obj python\CMakeFiles\gtsam_py.dir\geometry.cpp.obj python\CMakeFiles\gtsam_py.dir\linear.cpp.obj python\CMakeFiles\gtsam_py.dir\nonlinear.cpp.obj python\CMakeFiles\gtsam_py.dir\custom.cpp.obj python\CMakeFiles\gtsam_py.dir\symbolic.cpp.obj python\CMakeFiles\gtsam_py.dir\sam.cpp.obj python\CMakeFiles\gtsam_py.dir\slam.cpp.obj python\CMakeFiles\gtsam_py.dir\sfm.cpp.obj python\CMakeFiles\gtsam_py.dir\navigation.cpp.obj python\CMakeFiles\gtsam_py.dir\basis.cpp.obj python\CMakeFiles\gtsam_py.dir\hybrid.cpp.obj  /out:python\gtsam\gtsam.cp311-win_amd64.pyd /implib:lib\python_gtsam.lib /pdb:python\gtsam\gtsam.pdb /dll /version:0.0 /FORCE:MULTIPLE /INCREMENTAL:NO  -LTCG  lib\gtsam.lib  %PREFIX%\libs\python311.lib  %PREFIX%\Library\lib\boost_serialization.lib  %PREFIX%\Library\lib\boost_system.lib  %PREFIX%\Library\lib\boost_filesystem.lib  %PREFIX%\Library\lib\boost_atomic.lib  %PREFIX%\Library\lib\boost_thread.lib  -lpthreads  %PREFIX%\Library\lib\boost_date_time.lib  %PREFIX%\Library\lib\boost_regex.lib  %PREFIX%\Library\lib\boost_timer.lib  %PREFIX%\Library\lib\boost_chrono.lib  tbb.lib  tbbmalloc.lib  %PREFIX%\Library\lib\metis.lib  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib  && cd ."
LINK: command "C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1429~1.301\bin\HostX64\x64\link.exe /nologo python\CMakeFiles\gtsam_py.dir\gtsam.cpp.obj python\CMakeFiles\gtsam_py.dir\base.cpp.obj python\CMakeFiles\gtsam_py.dir\inference.cpp.obj python\CMakeFiles\gtsam_py.dir\discrete.cpp.obj python\CMakeFiles\gtsam_py.dir\geometry.cpp.obj python\CMakeFiles\gtsam_py.dir\linear.cpp.obj python\CMakeFiles\gtsam_py.dir\nonlinear.cpp.obj python\CMakeFiles\gtsam_py.dir\custom.cpp.obj python\CMakeFiles\gtsam_py.dir\symbolic.cpp.obj python\CMakeFiles\gtsam_py.dir\sam.cpp.obj python\CMakeFiles\gtsam_py.dir\slam.cpp.obj python\CMakeFiles\gtsam_py.dir\sfm.cpp.obj python\CMakeFiles\gtsam_py.dir\navigation.cpp.obj python\CMakeFiles\gtsam_py.dir\basis.cpp.obj python\CMakeFiles\gtsam_py.dir\hybrid.cpp.obj /out:python\gtsam\gtsam.cp311-win_amd64.pyd /implib:lib\python_gtsam.lib /pdb:python\gtsam\gtsam.pdb /dll /version:0.0 /FORCE:MULTIPLE /INCREMENTAL:NO -LTCG lib\gtsam.lib %PREFIX%\libs\python311.lib %PREFIX%\Library\lib\boost_serialization.lib %PREFIX%\Library\lib\boost_system.lib %PREFIX%\Library\lib\boost_filesystem.lib %PREFIX%\Library\lib\boost_atomic.lib %PREFIX%\Library\lib\boost_thread.lib -lpthreads %PREFIX%\Library\lib\boost_date_time.lib %PREFIX%\Library\lib\boost_regex.lib %PREFIX%\Library\lib\boost_timer.lib %PREFIX%\Library\lib\boost_chrono.lib tbb.lib tbbmalloc.lib %PREFIX%\Library\lib\metis.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST:EMBED,ID=2" failed (exit code 1120) with the following output:
LINK : warning LNK4044: unrecognized option '/lpthreads'; ignored
   Creating library lib\python_gtsam.lib and object lib\python_gtsam.exp
gtsam.cpp.obj : error LNK2001: unresolved external symbol "public: __cdecl gtsam::RedirectCout::~RedirectCout(void)" (??1RedirectCout@gtsam@@QEAA@XZ)
gtsam.cpp.obj : error LNK2001: unresolved external symbol "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl gtsam::RedirectCout::str(void)const " (?str@RedirectCout@gtsam@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
discrete.cpp.obj : error LNK2001: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl gtsam::html(class gtsam::DiscreteValues const &,class std::function<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl(unsigned __int64)> const &,class std::map<unsigned __int64,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,struct std::less<unsigned __int64>,class std::allocator<struct std::pair<unsigned __int64 const ,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > > > const &)" (?html@gtsam@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBVDiscreteValues@1@AEBV?$function@$$A6A?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z@3@AEBV?$map@_KV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@U?$less@_K@2@V?$allocator@U?$pair@$$CB_KV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@@std@@@2@@3@@Z)
discrete.cpp.obj : error LNK2001: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl gtsam::markdown(class gtsam::DiscreteValues const &,class std::function<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl(unsigned __int64)> const &,class std::map<unsigned __int64,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,struct std::less<unsigned __int64>,class std::allocator<struct std::pair<unsigned __int64 const ,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > > > const &)" (?markdown@gtsam@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBVDiscreteValues@1@AEBV?$function@$$A6A?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z@3@AEBV?$map@_KV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@U?$less@_K@2@V?$allocator@U?$pair@$$CB_KV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@@std@@@2@@3@@Z)
custom.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl gtsam::CustomFactor::print(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::function<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl(unsigned __int64)> const &)const " (?print@CustomFactor@gtsam@@UEBAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV?$function@$$A6A?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z@4@@Z)
custom.cpp.obj : error LNK2001: unresolved external symbol "public: virtual class Eigen::Matrix<double,-1,1,0,-1,1> __cdecl gtsam::CustomFactor::unwhitenedError(class gtsam::Values const &,class boost::optional<class std::vector<class Eigen::Matrix<double,-1,-1,0,-1,-1>,class std::allocator<class Eigen::Matrix<double,-1,-1,0,-1,-1> > > &>)const " (?unwhitenedError@CustomFactor@gtsam@@UEBA?AV?$Matrix@N$0?0$00$0A@$0?0$00@Eigen@@AEBVValues@2@V?$optional@AEAV?$vector@V?$Matrix@N$0?0$0?0$0A@$0?0$0?0@Eigen@@V?$allocator@V?$Matrix@N$0?0$0?0$0A@$0?0$0?0@Eigen@@@std@@@std@@@boost@@@Z)
sfm.cpp.obj : error LNK2001: unresolved external symbol "class std::vector<struct gtsam::SfmTrack2d,class std::allocator<struct gtsam::SfmTrack2d> > __cdecl gtsam::gtsfm::tracksFromPairwiseMatches(class std::map<class gtsam::IndexPair,class Eigen::Matrix<int,-1,2,0,-1,2>,struct std::less<class gtsam::IndexPair>,class std::allocator<struct std::pair<class gtsam::IndexPair const ,class Eigen::Matrix<int,-1,2,0,-1,2> > > > const &,class std::vector<struct gtsam::gtsfm::Keypoints,class std::allocator<struct gtsam::gtsfm::Keypoints> > const &,bool)" (?tracksFromPairwiseMatches@gtsfm@gtsam@@YA?AV?$vector@USfmTrack2d@gtsam@@V?$allocator@USfmTrack2d@gtsam@@@std@@@std@@AEBV?$map@VIndexPair@gtsam@@V?$Matrix@H$0?0$01$0A@$0?0$01@Eigen@@U?$less@VIndexPair@gtsam@@@std@@V?$allocator@U?$pair@$$CBVIndexPair@gtsam@@V?$Matrix@H$0?0$01$0A@$0?0$01@Eigen@@@std@@@6@@4@AEBV?$vector@UKeypoints@gtsfm@gtsam@@V?$allocator@UKeypoints@gtsfm@gtsam@@@std@@@4@_N@Z)
sfm.cpp.obj : error LNK2001: unresolved external symbol "public: class gtsam::Values __cdecl gtsam::TranslationRecovery::run(class std::vector<class gtsam::BinaryMeasurement<class gtsam::Unit3>,class std::allocator<class gtsam::BinaryMeasurement<class gtsam::Unit3> > > const &,double,class std::vector<class gtsam::BinaryMeasurement<class Eigen::Matrix<double,3,1,0,3,1> >,class std::allocator<class gtsam::BinaryMeasurement<class Eigen::Matrix<double,3,1,0,3,1> > > > const &,class gtsam::Values const &)const " (?run@TranslationRecovery@gtsam@@QEBA?AVValues@2@AEBV?$vector@V?$BinaryMeasurement@VUnit3@gtsam@@@gtsam@@V?$allocator@V?$BinaryMeasurement@VUnit3@gtsam@@@gtsam@@@std@@@std@@NAEBV?$vector@V?$BinaryMeasurement@V?$Matrix@N$02$00$0A@$02$00@Eigen@@@gtsam@@V?$allocator@V?$BinaryMeasurement@V?$Matrix@N$02$00$0A@$02$00@Eigen@@@gtsam@@@std@@@5@AEBV32@@Z)
sfm.cpp.obj : error LNK2001: unresolved external symbol "public: void __cdecl gtsam::TranslationRecovery::addPrior(class std::vector<class gtsam::BinaryMeasurement<class gtsam::Unit3>,class std::allocator<class gtsam::BinaryMeasurement<class gtsam::Unit3> > > const &,double,class std::vector<class gtsam::BinaryMeasurement<class Eigen::Matrix<double,3,1,0,3,1> >,class std::allocator<class gtsam::BinaryMeasurement<class Eigen::Matrix<double,3,1,0,3,1> > > > const &,class gtsam::NonlinearFactorGraph *,class boost::shared_ptr<class gtsam::noiseModel::Base> const &)const " (?addPrior@TranslationRecovery@gtsam@@QEBAXAEBV?$vector@V?$BinaryMeasurement@VUnit3@gtsam@@@gtsam@@V?$allocator@V?$BinaryMeasurement@VUnit3@gtsam@@@gtsam@@@std@@@std@@NAEBV?$vector@V?$BinaryMeasurement@V?$Matrix@N$02$00$0A@$02$00@Eigen@@@gtsam@@V?$allocator@V?$BinaryMeasurement@V?$Matrix@N$02$00$0A@$02$00@Eigen@@@gtsam@@@std@@@4@PEAVNonlinearFactorGraph@2@AEBV?$shared_ptr@VBase@noiseModel@gtsam@@@boost@@@Z)
sfm.cpp.obj : error LNK2001: unresolved external symbol "public: class gtsam::NonlinearFactorGraph __cdecl gtsam::TranslationRecovery::buildGraph(class std::vector<class gtsam::BinaryMeasurement<class gtsam::Unit3>,class std::allocator<class gtsam::BinaryMeasurement<class gtsam::Unit3> > > const &)const " (?buildGraph@TranslationRecovery@gtsam@@QEBA?AVNonlinearFactorGraph@2@AEBV?$vector@V?$BinaryMeasurement@VUnit3@gtsam@@@gtsam@@V?$allocator@V?$BinaryMeasurement@VUnit3@gtsam@@@gtsam@@@std@@@std@@@Z)
python\gtsam\gtsam.cp311-win_amd64.pyd : fatal error LNK1120: 10 unresolved externals

Full build log below.

(build) C:\Users\luser\git_repos\gtsam-feedstock>conda mambabuild -c conda-forge . -m .ci_support\win_64_numpy1.23python3.11.____cpython.yaml
Updating build index: C:\Users\luser\miniforge3\envs\build\conda-bld

No numpy version specified in conda_build_config.yaml.  Falling back to default numpy value of 1.22
WARNING:conda_build.metadata:No numpy version specified in conda_build_config.yaml.  Falling back to default numpy value of 1.22
Adding in variants from internal_defaults
INFO:conda_build.variants:Adding in variants from internal_defaults
Adding in variants from C:\Users\luser\git_repos\gtsam-feedstock\recipe\conda_build_config.yaml
INFO:conda_build.variants:Adding in variants from C:\Users\luser\git_repos\gtsam-feedstock\recipe\conda_build_config.yaml
Adding in variants from C:\Users\luser\git_repos\gtsam-feedstock\.ci_support\win_64_numpy1.23python3.11.____cpython.yaml
INFO:conda_build.variants:Adding in variants from C:\Users\luser\git_repos\gtsam-feedstock\.ci_support\win_64_numpy1.23python3.11.____cpython.yaml
Attempting to finalize metadata for gtsam
INFO:conda_build.metadata:Attempting to finalize metadata for gtsam
pkgs/main/win-64                                              No change
pkgs/main/noarch                                              No change
pkgs/r/win-64                                                 No change
pkgs/msys2/win-64                                             No change
pkgs/msys2/noarch                                             No change
pkgs/r/noarch                                                 No change
conda-forge/noarch                                  14.3MB @   5.7MB/s  3.2s
conda-forge/win-64                                  22.7MB @   6.0MB/s  5.0s
Reloading output folder: C:\Users\luser\miniforge3\envs\build\conda-bld
C:/Users/luser/miniforge3/envs/build/conda-bld/w.. 127.0 B @ 554.6kB/s  0.0s
C:/Users/luser/miniforge3/envs/build/conda-bld/n.. 127.0 B @   1.1MB/s  0.0s
Reloading output folder: C:\Users\luser\miniforge3\envs\build\conda-bld
C:/Users/luser/miniforge3/envs/build/conda-bld/w.. 127.0 B @ 729.9kB/s  0.0s
C:/Users/luser/miniforge3/envs/build/conda-bld/n.. 127.0 B @ 721.6kB/s  0.0s
Reloading output folder: C:\Users\luser\miniforge3\envs\build\conda-bld
C:/Users/luser/miniforge3/envs/build/conda-bld/w.. 127.0 B @ 701.7kB/s  0.0s
C:/Users/luser/miniforge3/envs/build/conda-bld/n.. 127.0 B @ 721.6kB/s  0.0s
BUILD START: ['gtsam-4.2.0-py311h669d342_1.tar.bz2']
Reloading output folder: C:\Users\luser\miniforge3\envs\build\conda-bld
C:/Users/luser/miniforge3/envs/build/conda-bld/w.. 127.0 B @ 661.5kB/s  0.0s
C:/Users/luser/miniforge3/envs/build/conda-bld/n.. 127.0 B @ 900.7kB/s  0.0s

## Package Plan ##

  environment location: C:\Users\luser\miniforge3\envs\build\conda-bld\gtsam_1698195958765\_h_env


The following NEW packages will be INSTALLED:

    bzip2:             1.0.8-h8ffe710_4            conda-forge
    ca-certificates:   2023.7.22-h56e8100_0        conda-forge
    eigen:             3.4.0-h91493d7_0            conda-forge
    geographiclib-cpp: 2.3-h91493d7_0              conda-forge
    intel-openmp:      2023.2.0-h57928b3_50496     conda-forge
    libblas:           3.9.0-19_win64_mkl          conda-forge
    libboost:          1.82.0-h65993cd_6           conda-forge
    libboost-devel:    1.82.0-h91493d7_6           conda-forge
    libboost-headers:  1.82.0-h57928b3_6           conda-forge
    libcblas:          3.9.0-19_win64_mkl          conda-forge
    libexpat:          2.5.0-h63175ca_1            conda-forge
    libffi:            3.4.2-h8ffe710_5            conda-forge
    libhwloc:          2.9.3-default_haede6df_1009 conda-forge
    libiconv:          1.17-h8ffe710_0             conda-forge
    liblapack:         3.9.0-19_win64_mkl          conda-forge
    liblapacke:        3.9.0-19_win64_mkl          conda-forge
    libsqlite:         3.43.2-hcfcfb64_0           conda-forge
    libxml2:           2.11.5-hc3477c8_1           conda-forge
    libzlib:           1.2.13-hcfcfb64_5           conda-forge
    metis:             5.1.0-h63175ca_1007         conda-forge
    mkl:               2023.2.0-h6a75c08_50496     conda-forge
    numpy:             1.23.5-py311h95d790f_0      conda-forge
    openssl:           3.1.3-hcfcfb64_0            conda-forge
    pip:               23.3.1-pyhd8ed1ab_0         conda-forge
    pthreads-win32:    2.9.1-hfa6e2cd_3            conda-forge
    pybind11:          2.11.1-py311h005e61a_2      conda-forge
    pybind11-global:   2.11.1-py311h005e61a_2      conda-forge
    pyparsing:         3.1.1-pyhd8ed1ab_0          conda-forge
    python:            3.11.6-h2628c8c_0_cpython   conda-forge
    python_abi:        3.11-4_cp311                conda-forge
    setuptools:        68.2.2-pyhd8ed1ab_0         conda-forge
    suitesparse:       5.4.0-h5d0cbe0_1            conda-forge
    tbb:               2021.10.0-h91493d7_2        conda-forge
    tbb-devel:         2021.10.0-h91493d7_2        conda-forge
    tk:                8.6.13-hcfcfb64_0           conda-forge
    tzdata:            2023c-h71feb2d_0            conda-forge
    ucrt:              10.0.22621.0-h57928b3_0     conda-forge
    vc:                14.3-h64f974e_17            conda-forge
    vc14_runtime:      14.36.32532-hdcecf7f_17     conda-forge
    vs2015_runtime:    14.36.32532-h05e6639_17     conda-forge
    wheel:             0.41.2-pyhd8ed1ab_0         conda-forge
    xz:                5.2.6-h8d14728_0            conda-forge
    zstd:              1.5.5-h12be248_0            conda-forge

Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done
Reloading output folder: C:\Users\luser\miniforge3\envs\build\conda-bld
C:/Users/luser/miniforge3/envs/build/conda-bld/w.. 127.0 B @ 616.5kB/s  0.0s
C:/Users/luser/miniforge3/envs/build/conda-bld/n.. 127.0 B @ 888.1kB/s  0.0s
Reloading output folder: C:\Users\luser\miniforge3\envs\build\conda-bld
C:/Users/luser/miniforge3/envs/build/conda-bld/w.. 127.0 B @ 686.5kB/s  0.0s
C:/Users/luser/miniforge3/envs/build/conda-bld/n.. 127.0 B @   1.1MB/s  0.0s

## Package Plan ##

  environment location: C:\Users\luser\miniforge3\envs\build\conda-bld\gtsam_1698195958765\_build_env


The following NEW packages will be INSTALLED:

    bzip2:           1.0.8-h8ffe710_4        conda-forge
    ca-certificates: 2023.7.22-h56e8100_0    conda-forge
    cmake:           3.27.6-hf0feee3_0       conda-forge
    krb5:            1.21.2-heb0366b_0       conda-forge
    libcurl:         8.4.0-hd5e4a3a_0        conda-forge
    libexpat:        2.5.0-h63175ca_1        conda-forge
    libssh2:         1.11.0-h7dfc565_0       conda-forge
    libuv:           1.44.2-hcfcfb64_1       conda-forge
    libzlib:         1.2.13-hcfcfb64_5       conda-forge
    ninja:           1.11.1-h91493d7_0       conda-forge
    openssl:         3.1.3-hcfcfb64_0        conda-forge
    ucrt:            10.0.22621.0-h57928b3_0 conda-forge
    vc:              14.3-h64f974e_17        conda-forge
    vc14_runtime:    14.36.32532-hdcecf7f_17 conda-forge
    vs2015_runtime:  14.36.32532-h05e6639_17 conda-forge
    vs2019_win-64:   19.29.30139-he1865b1_17 conda-forge
    vswhere:         3.1.4-h57928b3_0        conda-forge
    xz:              5.2.6-h8d14728_0        conda-forge
    zstd:            1.5.5-h12be248_0        conda-forge

Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done
Source cache directory is: C:\Users\luser\miniforge3\envs\build\conda-bld\src_cache
INFO:conda_build.source:Source cache directory is: C:\Users\luser\miniforge3\envs\build\conda-bld\src_cache
Downloading source to cache: 4.2.0_8b44d6b98a.tar.gz
INFO:conda_build.source:Downloading source to cache: 4.2.0_8b44d6b98a.tar.gz
Downloading https://github.com/borglab/gtsam/archive/refs/tags/4.2.0.tar.gz
INFO:conda_build.source:Downloading https://github.com/borglab/gtsam/archive/refs/tags/4.2.0.tar.gz
Success
INFO:conda_build.source:Success
Extracting download
Applying patch: C:\Users\luser\git_repos\gtsam-feedstock\recipe\nobuild-examples-timing.patch
Applying patch: C:\Users\luser\git_repos\gtsam-feedstock\recipe\nobuild-examples-timing.patch with args:
['-Np1', '-i', 'C:\\Users\\luser\\AppData\\Local\\Temp\\tmpnhqn55o_\\nobuild-examples-timing.patch.native', '--binary']
checking file CMakeLists.txt
Hunk #1 succeeded at 80 (offset -355 lines).
patching file CMakeLists.txt
Hunk #1 succeeded at 80 (offset -355 lines).
Applying patch: C:\Users\luser\git_repos\gtsam-feedstock\recipe\unvendor-findtbb.patch
Applying patch: C:\Users\luser\git_repos\gtsam-feedstock\recipe\unvendor-findtbb.patch with args:
['-Np1', '-i', 'C:\\Users\\luser\\AppData\\Local\\Temp\\tmp3kh1hwsk\\unvendor-findtbb.patch.native', '--binary']
checking file cmake/FindTBB.cmake
patching file cmake/FindTBB.cmake
Applying patch: C:\Users\luser\git_repos\gtsam-feedstock\recipe\unvendor-pybind11.patch
Applying patch: C:\Users\luser\git_repos\gtsam-feedstock\recipe\unvendor-pybind11.patch with args:
['-Np1', '-i', 'C:\\Users\\luser\\AppData\\Local\\Temp\\tmp0y5ylddn\\unvendor-pybind11.patch.native', '--binary']
checking file CMakeLists.txt
checking file python/CMakeLists.txt
checking file wrap/CMakeLists.txt
patching file CMakeLists.txt
patching file python/CMakeLists.txt
patching file wrap/CMakeLists.txt
Applying patch: C:\Users\luser\git_repos\gtsam-feedstock\recipe\fix-python-build-win.patch
Patch level ambiguous, selecting least deep
Applying patch: C:\Users\luser\git_repos\gtsam-feedstock\recipe\fix-python-build-win.patch with args:
['-Np1', '-i', 'C:\\Users\\luser\\AppData\\Local\\Temp\\tmpm6pl1ru4\\fix-python-build-win.patch.native', '--binary']
checking file python/CMakeLists.txt
Hunk #1 succeeded at 94 (offset 1 line).
Hunk #2 succeeded at 107 (offset 1 line).
Hunk #3 succeeded at 126 (offset 1 line).
Hunk #4 succeeded at 177 (offset 1 line).
Hunk #5 succeeded at 189 (offset 1 line).
patching file python/CMakeLists.txt
Hunk #1 succeeded at 94 (offset 1 line).
Hunk #2 succeeded at 107 (offset 1 line).
Hunk #3 succeeded at 126 (offset 1 line).
Hunk #4 succeeded at 177 (offset 1 line).
Hunk #5 succeeded at 189 (offset 1 line).
Applying patch: C:\Users\luser\git_repos\gtsam-feedstock\recipe\fix-boost.patch
Applying patch: C:\Users\luser\git_repos\gtsam-feedstock\recipe\fix-boost.patch with args:
['-Np1', '-i', 'C:\\Users\\luser\\AppData\\Local\\Temp\\tmpyr3u5zr2\\fix-boost.patch.native', '--binary']
checking file cmake/HandleBoost.cmake
checking file cmake/Config.cmake.in
patching file cmake/HandleBoost.cmake
patching file cmake/Config.cmake.in
Applying patch: C:\Users\luser\git_repos\gtsam-feedstock\recipe\1553_1584.patch
Applying patch: C:\Users\luser\git_repos\gtsam-feedstock\recipe\1553_1584.patch with args:
['-Np1', '-i', 'C:\\Users\\luser\\AppData\\Local\\Temp\\tmps4o5gzye\\1553_1584.patch.native', '--binary']
checking file CMakeLists.txt
checking file gtsam/geometry/PinholePose.h
checking file gtsam/geometry/Pose2.h
checking file gtsam/geometry/Pose3.h
checking file gtsam/geometry/Similarity2.h
checking file gtsam/geometry/Similarity3.h
checking file gtsam/geometry/SphericalCamera.h
checking file gtsam/geometry/Unit3.h
checking file gtsam/hybrid/HybridFactorGraph.h
checking file gtsam/hybrid/HybridSmoother.h
checking file gtsam/inference/Ordering.h
checking file gtsam/linear/IterativeSolver.h
checking file gtsam/nonlinear/ISAM2.h
checking file gtsam/slam/SmartFactorBase.h
checking file gtsam_unstable/linear/LP.h
checking file gtsam_unstable/linear/LPInitSolver.h
checking file gtsam_unstable/linear/QPSParser.h
patching file CMakeLists.txt
patching file gtsam/geometry/PinholePose.h
patching file gtsam/geometry/Pose2.h
patching file gtsam/geometry/Pose3.h
patching file gtsam/geometry/Similarity2.h
patching file gtsam/geometry/Similarity3.h
patching file gtsam/geometry/SphericalCamera.h
patching file gtsam/geometry/Unit3.h
patching file gtsam/hybrid/HybridFactorGraph.h
patching file gtsam/hybrid/HybridSmoother.h
patching file gtsam/inference/Ordering.h
patching file gtsam/linear/IterativeSolver.h
patching file gtsam/nonlinear/ISAM2.h
patching file gtsam/slam/SmartFactorBase.h
patching file gtsam_unstable/linear/LP.h
patching file gtsam_unstable/linear/LPInitSolver.h
patching file gtsam_unstable/linear/QPSParser.h
Applying patch: C:\Users\luser\git_repos\gtsam-feedstock\recipe\include_bitset.patch
Applying patch: C:\Users\luser\git_repos\gtsam-feedstock\recipe\include_bitset.patch with args:
['-Np1', '-i', 'C:\\Users\\luser\\AppData\\Local\\Temp\\tmpr6byhzut\\include_bitset.patch.native', '--binary']
checking file gtsam/hybrid/tests/testHybridEstimation.cpp
Hunk #1 succeeded at 35 (offset -1 lines).
patching file gtsam/hybrid/tests/testHybridEstimation.cpp
Hunk #1 succeeded at 35 (offset -1 lines).
Applying patch: C:\Users\luser\git_repos\gtsam-feedstock\recipe\fix-out-of-heap-space.patch
Applying patch: C:\Users\luser\git_repos\gtsam-feedstock\recipe\fix-out-of-heap-space.patch with args:
['-Np1', '-i', 'C:\\Users\\luser\\AppData\\Local\\Temp\\tmphdq5fq8r\\fix-out-of-heap-space.patch.native', '--binary']
checking file CMakeLists.txt
patching file CMakeLists.txt
Patch analysis gives:
[[ RA-MD1L-VE ]] - [[                                           nobuild-examples-timing.patch ]]
[[ RA-MD1LOVE ]] - [[                                                  unvendor-findtbb.patch ]]
[[ RA-MD1LOVE ]] - [[                                                 unvendor-pybind11.patch ]]
[[ RA-MD1--VE ]] - [[                                              fix-python-build-win.patch ]]
[[ RA-MD1LOVE ]] - [[                                                         fix-boost.patch ]]
[[ RA-MD1LOVE ]] - [[                                                         1553_1584.patch ]]
[[ RA-MD1L-VE ]] - [[                                                    include_bitset.patch ]]
[[ RA-MD1LOVE ]] - [[                                             fix-out-of-heap-space.patch ]]

Key:

R :: Reversible                       A :: Applicable
Y :: Build-prefix patch in use        M :: Minimal, non-amalgamated
D :: Dry-runnable                     N :: Patch level (1 is preferred)
L :: Patch level not-ambiguous        O :: Patch applies without offsets
V :: Patch applies without fuzz       E :: Patch applies without emitting to stderr

source tree in: C:\Users\luser\miniforge3\envs\build\conda-bld\gtsam_1698195958765\work
Rewriting env in output: {'BUILD_PREFIX': 'C:\\Users\\luser\\miniforge3\\envs\\build\\conda-bld\\gtsam_1698195958765\\_build_env',
 'PREFIX': 'C:\\Users\\luser\\miniforge3\\envs\\build\\conda-bld\\gtsam_1698195958765\\_h_env',
 'SRC_DIR': 'C:\\Users\\luser\\miniforge3\\envs\\build\\conda-bld\\gtsam_1698195958765\\work'}

(build) %SRC_DIR%>IF "" == "" (call %SRC_DIR%\build_env_setup.bat )

(build) %SRC_DIR%>set "CONDA_BUILD=1"

(build) %SRC_DIR%>set "PYTHONNOUSERSITE=1"

(build) %SRC_DIR%>set "CONDA_DEFAULT_ENV=%PREFIX%"

(build) %SRC_DIR%>set "ARCH=64"

(build) %SRC_DIR%>set "PREFIX=%PREFIX%"

(build) %SRC_DIR%>set "BUILD_PREFIX=%BUILD_PREFIX%"

(build) %SRC_DIR%>set "SYS_PREFIX=C:\Users\luser\miniforge3\envs\build"

(build) %SRC_DIR%>set "SYS_PYTHON=C:\Users\luser\miniforge3\envs\build\python.exe"

(build) %SRC_DIR%>set "SUBDIR=win-64"

(build) %SRC_DIR%>set "build_platform=win-64"

(build) %SRC_DIR%>set "SRC_DIR=%SRC_DIR%"

(build) %SRC_DIR%>set "ROOT=C:\Users\luser\miniforge3\envs\build"

(build) %SRC_DIR%>set "CONDA_PY=311"

(build) %SRC_DIR%>set "PY3K=1"

(build) %SRC_DIR%>set "PY_VER=3.11"

(build) %SRC_DIR%>set "STDLIB_DIR=%PREFIX%\Lib"

(build) %SRC_DIR%>set "SP_DIR=%PREFIX%\Lib\site-packages"

(build) %SRC_DIR%>set "PYTHON=%PREFIX%\python.exe"

(build) %SRC_DIR%>set "NPY_VER=1.23"

(build) %SRC_DIR%>set "CONDA_NPY=1.23"

(build) %SRC_DIR%>set "NPY_DISTUTILS_APPEND_FLAGS=1"

(build) %SRC_DIR%>set "PERL_VER=5.26"

(build) %SRC_DIR%>set "CONDA_PERL=5.26.2"

(build) %SRC_DIR%>set "LUA_VER=5"

(build) %SRC_DIR%>set "CONDA_LUA=5"

(build) %SRC_DIR%>set "R_VER=3.4"

(build) %SRC_DIR%>set "CONDA_R=3.4"

(build) %SRC_DIR%>set "PKG_NAME=gtsam"

(build) %SRC_DIR%>set "PKG_VERSION=4.2.0"

(build) %SRC_DIR%>set "PKG_BUILDNUM=1"

(build) %SRC_DIR%>set "PKG_BUILD_STRING=placeholder"

(build) %SRC_DIR%>set "PKG_HASH=1234567"

(build) %SRC_DIR%>set "RECIPE_DIR=C:\Users\luser\git_repos\gtsam-feedstock\recipe"

(build) %SRC_DIR%>set "CPU_COUNT=1"

(build) %SRC_DIR%>set "SHLIB_EXT=.dll"

(build) %SRC_DIR%>set "PATH=%BUILD_PREFIX%;%BUILD_PREFIX%\Library\mingw-w64\bin;%BUILD_PREFIX%\Library\usr\bin;%BUILD_PREFIX%\Library\bin;%BUILD_PREFIX%\Scripts;%BUILD_PREFIX%\bin;%PREFIX%;%PREFIX%\Library\mingw-w64\bin;%PREFIX%\Library\usr\bin;%PREFIX%\Library\bin;%PREFIX%\Scripts;%PREFIX%\bin;C:\Users\luser\miniforge3\envs\build;C:\Users\luser\miniforge3\envs\build\Library\mingw-w64\bin;C:\Users\luser\miniforge3\envs\build\Library\usr\bin;C:\Users\luser\miniforge3\envs\build\Library\bin;C:\Users\luser\miniforge3\envs\build\Scripts;C:\Users\luser\miniforge3\envs\build\bin;C:\Users\luser\miniforge3\condabin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files\Git\cmd;C:\Users\luser\AppData\Local\Microsoft\WindowsApps;."

(build) %SRC_DIR%>set "SCRIPTS=%PREFIX%\Scripts"

(build) %SRC_DIR%>set "LIBRARY_PREFIX=%PREFIX%\Library"

(build) %SRC_DIR%>set "LIBRARY_BIN=%PREFIX%\Library\bin"

(build) %SRC_DIR%>set "LIBRARY_INC=%PREFIX%\Library\include"

(build) %SRC_DIR%>set "LIBRARY_LIB=%PREFIX%\Library\lib"

(build) %SRC_DIR%>set "CYGWIN_PREFIX=/cygdrive/c/Users/luser/miniforge3/envs/build/conda-bld/gtsam_1698195958765/_h_env"

(build) %SRC_DIR%>set "ALLUSERSPROFILE=C:\ProgramData"

(build) %SRC_DIR%>set "APPDATA=C:\Users\luser\AppData\Roaming"

(build) %SRC_DIR%>set "CommonProgramFiles=C:\Program Files\Common Files"

(build) %SRC_DIR%>set "CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files"

(build) %SRC_DIR%>set "CommonProgramW6432=C:\Program Files\Common Files"

(build) %SRC_DIR%>set "COMPUTERNAME=DESKTOP-EKH11S7"

(build) %SRC_DIR%>set "ComSpec=C:\Windows\system32\cmd.exe"

(build) %SRC_DIR%>set "HOMEDRIVE=C:"

(build) %SRC_DIR%>set "HOMEPATH=\Users\luser"

(build) %SRC_DIR%>set "LOCALAPPDATA=C:\Users\luser\AppData\Local"

(build) %SRC_DIR%>set "LOGONSERVER=\\DESKTOP-EKH11S7"

(build) %SRC_DIR%>set "NUMBER_OF_PROCESSORS=1"

(build) %SRC_DIR%>set "PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"

(build) %SRC_DIR%>set "ProgramData=C:\ProgramData"

(build) %SRC_DIR%>set "ProgramFiles=C:\Program Files"

(build) %SRC_DIR%>set "ProgramFiles(x86)=C:\Program Files (x86)"

(build) %SRC_DIR%>set "ProgramW6432=C:\Program Files"

(build) %SRC_DIR%>set "PROMPT=(build) $P$G"

(build) %SRC_DIR%>set "PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules"

(build) %SRC_DIR%>set "PUBLIC=C:\Users\Public"

(build) %SRC_DIR%>set "SystemDrive=C:"

(build) %SRC_DIR%>set "SystemRoot=C:\Windows"

(build) %SRC_DIR%>set "TEMP=C:\Users\luser\AppData\Local\Temp"

(build) %SRC_DIR%>set "TMP=C:\Users\luser\AppData\Local\Temp"

(build) %SRC_DIR%>set "USERDOMAIN=DESKTOP-EKH11S7"

(build) %SRC_DIR%>set "USERNAME=luser"

(build) %SRC_DIR%>set "USERPROFILE=C:\Users\luser"

(build) %SRC_DIR%>set "windir=C:\Windows"

(build) %SRC_DIR%>set "PROCESSOR_ARCHITECTURE=AMD64"

(build) %SRC_DIR%>set "PROCESSOR_IDENTIFIER=AMD64 Family 23 Model 113 Stepping 0, AuthenticAMD"

(build) %SRC_DIR%>set "BUILD=amd64-pc-windows-19.0.0"

(build) %SRC_DIR%>set "zip_keys=[['python', 'numpy']]"

(build) %SRC_DIR%>set "extend_keys={'ignore_version', 'extend_keys', 'ignore_build_only_deps', 'pin_run_as_build'}"

(build) %SRC_DIR%>set "ignore_build_only_deps={'numpy', 'python'}"

(build) %SRC_DIR%>set "pin_run_as_build=OrderedDict([('python', {'min_pin': 'x.x', 'max_pin': 'x.x'}), ('r-base', OrderedDict([('min_pin', 'x.x'), ('max_pin', 'x.x')]))])"

(build) %SRC_DIR%>set "channel_targets=conda-forge main"

(build) %SRC_DIR%>set "libboost_devel=1.82"

(build) %SRC_DIR%>set "cpu_optimization_target=nocona"

(build) %SRC_DIR%>set "metis=5.1"

(build) %SRC_DIR%>set "tbb_devel=2021"

(build) %SRC_DIR%>set "tbb=2021"

(build) %SRC_DIR%>set "fortran_compiler=gfortran"

(build) %SRC_DIR%>set "channel_sources=conda-forge"

(build) %SRC_DIR%>set "cxx_compiler=vs2019"

(build) %SRC_DIR%>set "c_compiler=vs2019"

(build) %SRC_DIR%>set "vc=14"

(build) %SRC_DIR%>set "cran_mirror=https://cran.r-project.org"

(build) %SRC_DIR%>set "suitesparse=5"

(build) %SRC_DIR%>set "target_platform=win-64"

(build) %SRC_DIR%>set "libboost_python_devel=1.82"

(build) %SRC_DIR%>set "r_base=3.4"

(build) %SRC_DIR%>set "CONDA_BUILD_STATE=BUILD"

(build) %SRC_DIR%>set "PIP_NO_BUILD_ISOLATION=False"

(build) %SRC_DIR%>set "PIP_NO_DEPENDENCIES=True"

(build) %SRC_DIR%>set "PIP_IGNORE_INSTALLED=True"

(build) %SRC_DIR%>set "PIP_CACHE_DIR=C:\Users\luser\miniforge3\envs\build\conda-bld\gtsam_1698195958765\pip_cache"

(build) %SRC_DIR%>set "PIP_NO_INDEX=True"

(build) %SRC_DIR%>set "INCLUDE=%PREFIX%\Library\include;"

(build) %SRC_DIR%>set "LIB=%PREFIX%\Library\lib;"

(build) %SRC_DIR%>call "C:\Users\luser\miniforge3\envs\build\Scripts\..\condabin\conda_hook.bat"

(build) %SRC_DIR%>call "C:\Users\luser\miniforge3\envs\build\Scripts\..\condabin\conda.bat" activate "%PREFIX%"

%SRC_DIR%>SET DISTUTILS_USE_SDK=1

%SRC_DIR%>SET MSSdk=1

%SRC_DIR%>SET "VS_VERSION=16.0"

%SRC_DIR%>SET "VS_MAJOR=16"

%SRC_DIR%>SET "VS_YEAR=2019"

%SRC_DIR%>set "MSYS2_ARG_CONV_EXCL=/AI;/AL;/OUT;/out"

%SRC_DIR%>set "MSYS2_ENV_CONV_EXCL=CL"

%SRC_DIR%>set "PY_VCRUNTIME_REDIST=%PREFIX%\bin\vcruntime140.dll"

%SRC_DIR%>set "CXX=cl.exe"

%SRC_DIR%>set "CC=cl.exe"

%SRC_DIR%>set "VSINSTALLDIR="

%SRC_DIR%>set "NEWER_VS_WITH_OLDER_VC=0"

%SRC_DIR%>for /F "usebackq tokens=*" %i in (`vswhere.exe -nologo -products * -version [16.0,17.0) -property installationPath`) do (set "VSINSTALLDIR=%i\" )

%SRC_DIR%>if not exist "" (for /F "usebackq tokens=*" %i in (`vswhere.exe -nologo -products * -requires Microsoft.VisualStudio.ComponentGroup.VC.Tools.142.x86.x64 -property installationPath`) do (
set "VSINSTALLDIR=%i\"
 set "NEWER_VS_WITH_OLDER_VC=1"
) )

%SRC_DIR%>(
set "VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio\2022\Community\"
 set "NEWER_VS_WITH_OLDER_VC=1"
)

%SRC_DIR%>if not exist "C:\Program Files\Microsoft Visual Studio\2022\Community\" (for /F "usebackq tokens=*" %i in (`vswhere.exe -nologo -products * -requires Microsoft.VisualStudio.Component.VC.v142.x86.x64 -property installationPath`) do (
set "VSINSTALLDIR=%i\"
 set "NEWER_VS_WITH_OLDER_VC=1"
) )

%SRC_DIR%>if not exist "C:\Program Files\Microsoft Visual Studio\2022\Community\" (set "VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\" )

%SRC_DIR%>if not exist "C:\Program Files\Microsoft Visual Studio\2022\Community\" (set "VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\" )

%SRC_DIR%>if not exist "C:\Program Files\Microsoft Visual Studio\2022\Community\" (set "VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\" )

%SRC_DIR%>if not exist "C:\Program Files\Microsoft Visual Studio\2022\Community\" (set "VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\" )

%SRC_DIR%>IF NOT "1" == "" (
set "INCLUDE=%PREFIX%\Library\include;%PREFIX%\Library\include;"
 set "LIB=%PREFIX%\Library\lib;%PREFIX%\Library\lib;"
 set "CMAKE_PREFIX_PATH=%PREFIX%\Library;"
)

%SRC_DIR%>call :GetWin10SdkDir

%SRC_DIR%>call :GetWin10SdkDirHelper HKLM\SOFTWARE\Wow6432Node  1>nul 2>&1

%SRC_DIR%>if errorlevel 1 call :GetWin10SdkDirHelper HKCU\SOFTWARE\Wow6432Node  1>nul 2>&1

%SRC_DIR%>if errorlevel 1 call :GetWin10SdkDirHelper HKLM\SOFTWARE  1>nul 2>&1

%SRC_DIR%>if errorlevel 1 call :GetWin10SdkDirHelper HKCU\SOFTWARE  1>nul 2>&1

%SRC_DIR%>if errorlevel 1 exit /B 1

%SRC_DIR%>exit /B 0

%SRC_DIR%>for /F %i in ('dir /ON /B "C:\Program Files (x86)\Windows Kits\10\\include\10.*"') DO (SET WindowsSDKVer=%~i )

%SRC_DIR%>(SET WindowsSDKVer=10.0.22621.0 )

%SRC_DIR%>if errorlevel 1 (echo "Didn't find any windows 10 SDK. I'm not sure if things will work, but let's try..." )  else (echo Windows SDK version found as: "10.0.22621.0" )
Windows SDK version found as: "10.0.22621.0"

%SRC_DIR%>set "CMAKE_PLAT=x64"

%SRC_DIR%>set "VCVARSBAT=64"

%SRC_DIR%>set "CMAKE_ARGS=-DCMAKE_BUILD_TYPE=Release"

%SRC_DIR%>IF "1" == "1" (set "CMAKE_ARGS=-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%PREFIX%\Library -DCMAKE_PROGRAM_PATH=%BUILD_PREFIX%\bin;%BUILD_PREFIX%\Scripts;%BUILD_PREFIX%\Library\bin;%PREFIX%\bin;%PREFIX%\Scripts;%PREFIX%\Library\bin" )

%SRC_DIR%>IF NOT "win-64" == "win-64" (
set "CONDA_BUILD_CROSS_COMPILATION=1"
 set "CMAKE_ARGS=-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%PREFIX%\Library -DCMAKE_PROGRAM_PATH=%BUILD_PREFIX%\bin;%BUILD_PREFIX%\Scripts;%BUILD_PREFIX%\Library\bin;%PREFIX%\bin;%PREFIX%\Scripts;%PREFIX%\Library\bin -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_PROCESSOR=AMD64"
)  else (set "CONDA_BUILD_CROSS_COMPILATION=0" )

%SRC_DIR%>IF 2019 GEQ 2019 (
set "CMAKE_GEN=Visual Studio 16 2019"
 set "USE_NEW_CMAKE_GEN_SYNTAX=1"
)  ELSE (
IF "win-64" == "win-64" (set "CMAKE_GEN=Visual Studio 16 2019 Win64" )  else (set "CMAKE_GEN=Visual Studio 16 2019" )
 set "USE_NEW_CMAKE_GEN_SYNTAX=0"
)

%SRC_DIR%>echo "NEWER_VS_WITH_OLDER_VC=1"
"NEWER_VS_WITH_OLDER_VC=1"

%SRC_DIR%>if "1" == "1" (set /p NEWER_VS= 0<"C:\Program Files\Microsoft Visual Studio\2022\Community\\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt" )

%SRC_DIR%>type "C:\Program Files\Microsoft Visual Studio\2022\Community\\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt"
14.37.32822

%SRC_DIR%>dir "C:\Program Files\Microsoft Visual Studio\2022\Community\\VC\Redist\MSVC\"
 Volume in drive C has no label.
 Volume Serial Number is 6231-7F5D

 Directory of C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Redist\MSVC

24/10/2023  17:59    <DIR>          .
24/10/2023  17:59    <DIR>          ..
24/10/2023  18:00    <DIR>          14.29.30133
24/10/2023  17:56    <DIR>          14.36.32532
24/10/2023  17:56    <DIR>          v143
               0 File(s)              0 bytes
               5 Dir(s)  66.873.360.384 bytes free

%SRC_DIR%>if "1" == "1" (
echo "14.37.32822"
 if "14.3" == "14.2" (set "CMAKE_GEN=Visual Studio 16 2019" )  else (set "CMAKE_GEN=Visual Studio 17 2022" )
 set "USE_NEW_CMAKE_GEN_SYNTAX=1"
)
"14.37.32822"

%SRC_DIR%>IF "" == "" SET "CMAKE_GENERATOR=Visual Studio 17 2022"

%SRC_DIR%>IF "1" == "1" (
IF "" == "" SET "CMAKE_GENERATOR_PLATFORM=x64"
 IF "" == "" SET "CMAKE_GENERATOR_TOOLSET=v142"
)

%SRC_DIR%>pushd C:\Program Files\Microsoft Visual Studio\2022\Community\

C:\Program Files\Microsoft Visual Studio\2022\Community>CALL "VC\Auxiliary\Build\vcvars64.bat" -vcvars_ver=14.29 10.0.22621.0
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.7.5
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
-- The CXX compiler identification is MSVC 19.29.30152.0
-- The C compiler identification is MSVC 19.29.30152.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.29.30133/bin/HostX64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.29.30133/bin/HostX64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- GTSAM Version: 4.2a9
-- GTSAM_POSE3_EXPMAP=ON, enabling GTSAM_ROT3_EXPMAP as well
-- Found Boost: C:/Users/luser/miniforge3/envs/build/conda-bld/gtsam_1698195958765/_h_env/Library/lib/cmake/Boost-1.82.0/BoostConfig.cmake (found version "1.82.0") found components: serialization system filesystem thread program_options date_time timer chrono regex
-- Found Eigen version: 3.4.0
-- Could NOT find MKL (missing: MKL_INCLUDE_DIR MKL_LIBRARIES)
-- Found OpenMP_C: -openmp (found version "2.0")
-- Found OpenMP_CXX: -openmp (found version "2.0")
-- Found OpenMP: TRUE (found version "2.0")
-- Found Python3: %PREFIX%\python.exe (found version "3.11.6") found components: Interpreter Development Development.Module Development.Embed
-- Building 3rdparty
-- Could NOT find GeographicLib (missing: GeographicLib_LIBRARY_DIRS GeographicLib_LIBRARIES GeographicLib_INCLUDE_DIRS)
-- Building base
-- Building basis
-- Building geometry
-- Building inference
-- Building symbolic
-- Building discrete
-- Building hybrid
-- Building linear
-- Building nonlinear
-- Building sam
-- Building sfm
-- Building slam
-- Building navigation
-- Adding precompiled header for MSVC
-- GTSAM Version: 4.2.0
-- Install prefix: C:/Users/luser/miniforge3/envs/build/conda-bld/gtsam_1698195958765/_h_env/Library
-- Building GTSAM - shared: ON
-- Building base_unstable
-- Building geometry_unstable
-- Building linear_unstable
-- Building discrete_unstable
-- Building dynamics_unstable
-- Building nonlinear_unstable
-- Building slam_unstable
-- Building partition_unstable
-- GTSAM_UNSTABLE Version: 4.2.0
-- Install prefix: C:/Users/luser/miniforge3/envs/build/conda-bld/gtsam_1698195958765/_h_env/Library
-- Found Python: C:/Users/luser/miniforge3/envs/build/conda-bld/gtsam_1698195958765/_h_env/python.exe (found suitable exact version "3.11.6") found components: Interpreter Development Development.Module Development.Embed
-- gtwrap Package config : C:/Users/luser/miniforge3/envs/build/conda-bld/gtsam_1698195958765/_h_env/Library/CMake/gtwrap
-- gtwrap version        : 1.0
-- gtwrap CMake path     : C:/Users/luser/miniforge3/envs/build/conda-bld/gtsam_1698195958765/_h_env/Library/CMake/gtwrap
-- gtwrap library path   : C:/Users/luser/miniforge3/envs/build/conda-bld/gtsam_1698195958765/_h_env/Library/lib/gtwrap
-- gtwrap binary path    : C:/Users/luser/miniforge3/envs/build/conda-bld/gtsam_1698195958765/_h_env/Library/bin/gtwrap
-- gtwrap header path    : C:/Users/luser/miniforge3/envs/build/conda-bld/gtsam_1698195958765/_h_env/Library/include/gtwrap
-- Checking Python Version
-- Setting Python version for wrapper
-- Performing Test HAS_MSVC_GL_LTCG
-- Performing Test HAS_MSVC_GL_LTCG - Success
-- Found pybind11: C:/Users/luser/miniforge3/envs/build/conda-bld/gtsam_1698195958765/_h_env/Library/include (found version "2.11.1")
-- Wrote C:/Users/luser/miniforge3/envs/build/conda-bld/gtsam_1698195958765/work/build/GTSAMConfig.cmake
-- Wrote C:/Users/luser/miniforge3/envs/build/conda-bld/gtsam_1698195958765/work/build/GTSAM_UNSTABLEConfig.cmake
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- ===============================================================
-- ================  Configuration Options  ======================
--  CMAKE_CXX_COMPILER_ID type                       : MSVC
--  CMAKE_CXX_COMPILER_VERSION                       : 19.29.30152.0
--  CMake version                                    : 3.27.6
--  CMake generator                                  : Ninja
--  CMake build tool                                 : C:/Users/luser/miniforge3/envs/build/conda-bld/gtsam_1698195958765/_build_env/Library/bin/ninja.exe
-- Build flags
--  Build Tests                                      : Enabled
--  Build examples with 'make all'                   : Enabled
--  Build timing scripts with 'make all'             : Disabled
--  Build shared GTSAM libraries                     : Enabled
--  Put build type in library name                   : Enabled
--  Build libgtsam_unstable                          : Enabled
--  Build GTSAM unstable Python                      : Enabled
--  Build MATLAB Toolbox for unstable                : Disabled
--  GTSAM_COMPILE_FEATURES_PUBLIC                    : cxx_std_11
--  GTSAM_COMPILE_OPTIONS_PUBLIC                     : /wd4267
--  GTSAM_COMPILE_DEFINITIONS_PUBLIC                 : BOOST_ALL_NO_LIB;BOOST_ALL_DYN_LINK;EIGEN_NO_STATIC_ASSERT;EIGEN_NO_STATIC_ASSERT
--  GTSAM_COMPILE_OPTIONS_PUBLIC_RELEASE             :
--  GTSAM_COMPILE_DEFINITIONS_PUBLIC_RELEASE         :
--  Use System Eigen                                 : ON (Using version: 3.4.0)
--  Use System Metis                                 : ON
--  Using Boost version                              : 1.82.0
--  Use Intel TBB                                    : Yes (Version: 2021.10.0)
--  Eigen will use MKL                               : MKL not found
--  Eigen will use MKL and OpenMP                    : OpenMP found but GTSAM_WITH_EIGEN_MKL is disabled
--  Default allocator                                : TBB
--  Cheirality exceptions enabled                    : YES
-- Packaging flags
--  CPack Source Generator                           : TGZ
--  CPack Generator                                  : TGZ
-- GTSAM flags
--  Quaternions as default Rot3                      : Disabled
--  Runtime consistency checking                     : Disabled
--  Rot3 retract is full ExpMap                      : Enabled
--  Pose3 retract is full ExpMap                     : Enabled
--  Allow features deprecated in GTSAM 4.2           : Enabled
--  Metis-based Nested Dissection                    : Enabled
--  Use tangent-space preintegration                 : Enabled
-- MATLAB toolbox flags
--  Install MATLAB toolbox                           : Disabled
-- Python toolbox flags
--  Build Python module with pybind                  : Enabled
--  Python version                                   : 3.11.6
-- ===============================================================
-- Configuring done (18.5s)
-- Generating done (0.6s)
CMake Warning:
  Manually-specified variables were not used by the project:

    Boost_INCLUDEDIR
    Boost_LIBRARYDIR
    GTSAM_BUILD_STATIC_LIBRARY
    GTSAM_BUILD_WITH_MARCH_NATIVE


-- Build files have been written to: C:/Users/luser/miniforge3/envs/build/conda-bld/gtsam_1698195958765/work/build
[1/267] Building CXX object CppUnitLite\CMakeFiles\CppUnitLite.dir\Test.cpp.obj
[2/267] Building CXX object CppUnitLite\CMakeFiles\CppUnitLite.dir\TestRegistry.cpp.obj
[3/267] Building CXX object CppUnitLite\CMakeFiles\CppUnitLite.dir\TestResult.cpp.obj
[4/267] Linking CXX static library lib\CppUnitLite.lib
LINK : warning LNK4044: unrecognized option '/FORCE:MULTIPLE'; ignored

[5/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\precompiled_header.cpp.obj
[6/267] Building C object gtsam\CMakeFiles\gtsam.dir\3rdparty\CCOLAMD\Source\ccolamd.c.obj
cl : Command line warning D9025 : overriding '/W3' with '/w'
[7/267] Building C object gtsam\CMakeFiles\gtsam.dir\3rdparty\SuiteSparse_config\SuiteSparse_config.c.obj
cl : Command line warning D9025 : overriding '/W3' with '/w'
[8/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\base\DSFVector.cpp.obj
[9/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\base\Matrix.cpp.obj
[10/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\base\SymmetricBlockMatrix.cpp.obj
[11/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\base\Vector.cpp.obj
[12/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\base\VerticalBlockMatrix.cpp.obj
[13/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\base\cholesky.cpp.obj
[14/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\base\debug.cpp.obj
[15/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\base\timing.cpp.obj
[16/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\base\types.cpp.obj
[17/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\base\utilities.cpp.obj
[18/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\basis\Chebyshev.cpp.obj
[19/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\basis\Chebyshev2.cpp.obj
[20/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Cal3.cpp.obj
[21/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Cal3Bundler.cpp.obj
[22/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Cal3DS2.cpp.obj
[23/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Cal3DS2_Base.cpp.obj
[24/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Cal3Fisheye.cpp.obj
[25/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Cal3Unified.cpp.obj
[26/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Cal3_S2.cpp.obj
[27/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Cal3_S2Stereo.cpp.obj
[28/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\CalibratedCamera.cpp.obj
[29/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Cyclic.cpp.obj
[30/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\EssentialMatrix.cpp.obj
[31/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Line3.cpp.obj
[32/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\OrientedPlane3.cpp.obj
[33/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Point2.cpp.obj
[34/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Point3.cpp.obj
[35/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Pose2.cpp.obj
[36/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Pose3.cpp.obj
[37/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Rot2.cpp.obj
[38/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Rot3.cpp.obj
[39/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Rot3M.cpp.obj
[40/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\SO3.cpp.obj
[41/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\SO4.cpp.obj
[42/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\SOn.cpp.obj
[43/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Similarity2.cpp.obj
[44/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Similarity3.cpp.obj
[45/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\SimpleCamera.cpp.obj
[46/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\SphericalCamera.cpp.obj
[47/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\StereoCamera.cpp.obj
[48/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\StereoPoint2.cpp.obj
[49/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\Unit3.cpp.obj
[50/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\geometry\triangulation.cpp.obj
[51/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\inference\BayesTree.cpp.obj
[52/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\inference\DotWriter.cpp.obj
[53/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\inference\Factor.cpp.obj
[54/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\inference\Key.cpp.obj
[55/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\inference\LabeledSymbol.cpp.obj
[56/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\inference\Ordering.cpp.obj
[57/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\inference\Symbol.cpp.obj
[58/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\inference\VariableIndex.cpp.obj
[59/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\inference\VariableSlots.cpp.obj
[60/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\symbolic\SymbolicBayesNet.cpp.obj
[61/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\symbolic\SymbolicBayesTree.cpp.obj
[62/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\symbolic\SymbolicConditional.cpp.obj
[63/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\symbolic\SymbolicEliminationTree.cpp.obj
[64/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\symbolic\SymbolicFactor.cpp.obj
[65/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\symbolic\SymbolicFactorGraph.cpp.obj
[66/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\symbolic\SymbolicISAM.cpp.obj
[67/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\symbolic\SymbolicJunctionTree.cpp.obj
[68/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\discrete\AlgebraicDecisionTree.cpp.obj
[69/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\discrete\DecisionTreeFactor.cpp.obj
[70/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\discrete\DiscreteBayesNet.cpp.obj
DiscreteBayesNet::optimize (deprecated) does not compute MPE!
[71/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\discrete\DiscreteBayesTree.cpp.obj
[72/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\discrete\DiscreteConditional.cpp.obj
[73/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\discrete\DiscreteDistribution.cpp.obj
[74/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\discrete\DiscreteEliminationTree.cpp.obj
[75/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\discrete\DiscreteFactor.cpp.obj
[76/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\discrete\DiscreteFactorGraph.cpp.obj
[77/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\discrete\DiscreteJunctionTree.cpp.obj
[78/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\discrete\DiscreteKey.cpp.obj
[79/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\discrete\DiscreteLookupDAG.cpp.obj
[80/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\discrete\DiscreteValues.cpp.obj
[81/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\discrete\Signature.cpp.obj
%PREFIX%\Library\include\boost/spirit/include/phoenix.hpp(12): note: This header is deprecated. Use <boost/phoenix.hpp> instead.
[82/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\hybrid\GaussianMixture.cpp.obj
[83/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\hybrid\GaussianMixtureFactor.cpp.obj
[84/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\hybrid\HybridBayesNet.cpp.obj
[85/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\hybrid\HybridBayesTree.cpp.obj
[86/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\hybrid\HybridConditional.cpp.obj
[87/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\hybrid\HybridEliminationTree.cpp.obj
[88/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\hybrid\HybridFactor.cpp.obj
[89/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\hybrid\HybridFactorGraph.cpp.obj
[90/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\hybrid\HybridGaussianFactorGraph.cpp.obj
[91/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\hybrid\HybridGaussianISAM.cpp.obj
[92/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\hybrid\HybridJunctionTree.cpp.obj
[93/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\hybrid\HybridNonlinearFactorGraph.cpp.obj
[94/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\hybrid\HybridNonlinearISAM.cpp.obj
[95/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\hybrid\HybridSmoother.cpp.obj
[96/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\ConjugateGradientSolver.cpp.obj
[97/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\Errors.cpp.obj
[98/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\GaussianBayesNet.cpp.obj
[99/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\GaussianBayesTree.cpp.obj
[100/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\GaussianConditional.cpp.obj
[101/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\GaussianDensity.cpp.obj
[102/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\GaussianEliminationTree.cpp.obj
[103/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\GaussianFactor.cpp.obj
[104/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\GaussianFactorGraph.cpp.obj
[105/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\GaussianISAM.cpp.obj
[106/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\GaussianJunctionTree.cpp.obj
[107/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\HessianFactor.cpp.obj
[108/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\IterativeSolver.cpp.obj
[109/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\JacobianFactor.cpp.obj
[110/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\KalmanFilter.cpp.obj
[111/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\LossFunctions.cpp.obj
[112/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\NoiseModel.cpp.obj
[113/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\PCGSolver.cpp.obj
[114/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\Preconditioner.cpp.obj
[115/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\Sampler.cpp.obj
[116/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\Scatter.cpp.obj
[117/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\SubgraphBuilder.cpp.obj
[118/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\SubgraphPreconditioner.cpp.obj
[119/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\SubgraphSolver.cpp.obj
[120/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\VectorValues.cpp.obj
[121/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\iterative.cpp.obj
[122/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\linear\linearExceptions.cpp.obj
[123/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\CustomFactor.cpp.obj
[124/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\DoglegOptimizer.cpp.obj
[125/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\DoglegOptimizerImpl.cpp.obj
[126/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\GaussNewtonOptimizer.cpp.obj
[127/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\GraphvizFormatting.cpp.obj
[128/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\ISAM2-impl.cpp.obj
[129/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\ISAM2.cpp.obj
[130/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\ISAM2Clique.cpp.obj
[131/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\ISAM2Params.cpp.obj
[132/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\LevenbergMarquardtOptimizer.cpp.obj
[133/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\LevenbergMarquardtParams.cpp.obj
[134/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\LinearContainerFactor.cpp.obj
[135/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\Marginals.cpp.obj
[136/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\NonlinearConjugateGradientOptimizer.cpp.obj
[137/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\NonlinearFactor.cpp.obj
[138/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\NonlinearFactorGraph.cpp.obj
[139/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\NonlinearISAM.cpp.obj
[140/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\NonlinearOptimizer.cpp.obj
[141/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\NonlinearOptimizerParams.cpp.obj
[142/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\nonlinear\Values.cpp.obj
[143/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\sfm\DsfTrackGenerator.cpp.obj
[144/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\sfm\MFAS.cpp.obj
[145/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\sfm\SfmData.cpp.obj
[146/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\sfm\SfmTrack.cpp.obj
[147/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\sfm\ShonanAveraging.cpp.obj
[148/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\sfm\ShonanFactor.cpp.obj
[149/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\sfm\TranslationRecovery.cpp.obj
[150/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\slam\EssentialMatrixConstraint.cpp.obj
[151/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\slam\FrobeniusFactor.cpp.obj
[152/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\slam\InitializePose3.cpp.obj
[153/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\slam\OrientedPlane3Factor.cpp.obj
[154/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\slam\dataset.cpp.obj
[155/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\slam\lago.cpp.obj
[156/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\navigation\AHRSFactor.cpp.obj
[157/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\navigation\AttitudeFactor.cpp.obj
[158/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\navigation\BarometricFactor.cpp.obj
[159/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\navigation\CombinedImuFactor.cpp.obj
[160/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\navigation\GPSFactor.cpp.obj
[161/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\navigation\ImuBias.cpp.obj
[162/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\navigation\ImuFactor.cpp.obj
[163/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\navigation\ManifoldPreintegration.cpp.obj
[164/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\navigation\NavState.cpp.obj
[165/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\navigation\PreintegratedRotation.cpp.obj
[166/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\navigation\PreintegrationBase.cpp.obj
[167/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\navigation\PreintegrationParams.cpp.obj
[168/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\navigation\ScenarioRunner.cpp.obj
[169/267] Building CXX object gtsam\CMakeFiles\gtsam.dir\navigation\TangentPreintegration.cpp.obj
[170/267] Linking CXX shared library bin\gtsam.dll
[171/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\base\Dummy.cpp.obj
[172/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\geometry\BearingS2.cpp.obj
[173/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\geometry\Event.cpp.obj
[174/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\geometry\Pose3Upright.cpp.obj
[175/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\geometry\SimPolygon2D.cpp.obj
[176/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\geometry\SimWall2D.cpp.obj
[177/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\linear\LPInitSolver.cpp.obj
[178/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\linear\LPSolver.cpp.obj
[179/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\linear\QPSParser.cpp.obj
[180/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\linear\QPSolver.cpp.obj
[181/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\discrete\AllDiff.cpp.obj
[182/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\discrete\CSP.cpp.obj
[183/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\discrete\Domain.cpp.obj
[184/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\discrete\Scheduler.cpp.obj
[185/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\discrete\SingleValue.cpp.obj
[186/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\dynamics\PoseRTV.cpp.obj
[187/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\dynamics\SimpleHelicopter.cpp.obj
[188/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\nonlinear\BatchFixedLagSmoother.cpp.obj
[189/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\nonlinear\ConcurrentBatchFilter.cpp.obj
[190/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\nonlinear\ConcurrentBatchSmoother.cpp.obj
[191/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\nonlinear\ConcurrentFilteringAndSmoothing.cpp.obj
[192/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\nonlinear\ConcurrentIncrementalFilter.cpp.obj
[193/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\nonlinear\ConcurrentIncrementalSmoother.cpp.obj
[194/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\nonlinear\FixedLagSmoother.cpp.obj
[195/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\nonlinear\IncrementalFixedLagSmoother.cpp.obj
[196/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\nonlinear\LinearizedFactor.cpp.obj
[197/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\slam\AHRS.cpp.obj
[198/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\slam\DummyFactor.cpp.obj
[199/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\slam\LocalOrientedPlane3Factor.cpp.obj
[200/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\slam\Mechanization_bRn2.cpp.obj
[201/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\slam\ProjectionFactorRollingShutter.cpp.obj
[202/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\slam\RelativeElevationFactor.cpp.obj
[203/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\slam\SmartStereoProjectionFactorPP.cpp.obj
[204/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\slam\SmartStereoProjectionPoseFactor.cpp.obj
[205/267] Building CXX object gtsam_unstable\CMakeFiles\gtsam_unstable.dir\partition\GenericGraph.cpp.obj
[206/267] Linking CXX shared library gtsam_unstable\bin\gtsam_unstable.dll
[207/267] Building CXX object gtsam_unstable\discrete\examples\CMakeFiles\schedulingExample.dir\schedulingExample.cpp.obj
[208/267] Linking CXX executable bin\schedulingExample.exe
[209/267] Building CXX object gtsam_unstable\discrete\examples\CMakeFiles\schedulingQuals12.dir\schedulingQuals12.cpp.obj
[210/267] Linking CXX executable bin\schedulingQuals12.exe
[211/267] Building CXX object gtsam_unstable\discrete\examples\CMakeFiles\schedulingQuals13.dir\schedulingQuals13.cpp.obj
[212/267] Linking CXX executable bin\schedulingQuals13.exe
[213/267] Building CXX object gtsam_unstable\examples\CMakeFiles\ConcurrentCalibration.dir\ConcurrentCalibration.cpp.obj
[214/267] Linking CXX executable bin\ConcurrentCalibration.exe
[215/267] Building CXX object gtsam_unstable\examples\CMakeFiles\ConcurrentFilteringAndSmoothingExample.dir\ConcurrentFilteringAndSmoothingExample.cpp.obj
[216/267] Linking CXX executable bin\ConcurrentFilteringAndSmoothingExample.exe
[217/267] Building CXX object gtsam_unstable\examples\CMakeFiles\FixedLagSmootherExample.dir\FixedLagSmootherExample.cpp.obj
[218/267] Linking CXX executable bin\FixedLagSmootherExample.exe
[219/267] Building CXX object gtsam_unstable\examples\CMakeFiles\GncPoseAveragingExample.dir\GncPoseAveragingExample.cpp.obj
[220/267] Linking CXX executable bin\GncPoseAveragingExample.exe
[221/267] Building CXX object gtsam_unstable\examples\CMakeFiles\ISAM2_SmartFactorStereo_IMU.dir\ISAM2_SmartFactorStereo_IMU.cpp.obj
[222/267] Linking CXX executable bin\ISAM2_SmartFactorStereo_IMU.exe
[223/267] Building CXX object gtsam_unstable\examples\CMakeFiles\SmartProjectionFactorExample.dir\SmartProjectionFactorExample.cpp.obj
[224/267] Linking CXX executable bin\SmartProjectionFactorExample.exe
[225/267] Building CXX object gtsam_unstable\examples\CMakeFiles\SmartRangeExample_plaza1.dir\SmartRangeExample_plaza1.cpp.obj
[226/267] Linking CXX executable bin\SmartRangeExample_plaza1.exe
[227/267] Building CXX object gtsam_unstable\examples\CMakeFiles\SmartRangeExample_plaza2.dir\SmartRangeExample_plaza2.cpp.obj
[228/267] Linking CXX executable bin\SmartRangeExample_plaza2.exe
[229/267] Building CXX object gtsam_unstable\examples\CMakeFiles\SmartStereoProjectionFactorExample.dir\SmartStereoProjectionFactorExample.cpp.obj
[230/267] Linking CXX executable bin\SmartStereoProjectionFactorExample.exe
[231/267] Building CXX object gtsam_unstable\examples\CMakeFiles\TimeOfArrivalExample.dir\TimeOfArrivalExample.cpp.obj
[232/267] Linking CXX executable bin\TimeOfArrivalExample.exe
[233/267] Generating base.cpp
[234/267] Generating basis.cpp
[235/267] Generating custom.cpp
[236/267] Generating discrete.cpp
[237/267] Generating geometry.cpp
[238/267] Generating gtsam.cpp
[239/267] Generating hybrid.cpp
[240/267] Generating inference.cpp
[241/267] Generating linear.cpp
[242/267] Generating navigation.cpp
[243/267] Generating nonlinear.cpp
[244/267] Generating sam.cpp
[245/267] Generating sfm.cpp
[246/267] Generating slam.cpp
[247/267] Generating symbolic.cpp
[248/267] Building CXX object python\CMakeFiles\gtsam_py.dir\gtsam.cpp.obj
[249/267] Building CXX object python\CMakeFiles\gtsam_py.dir\base.cpp.obj
[250/267] Building CXX object python\CMakeFiles\gtsam_py.dir\inference.cpp.obj
[251/267] Building CXX object python\CMakeFiles\gtsam_py.dir\discrete.cpp.obj
[252/267] Building CXX object python\CMakeFiles\gtsam_py.dir\geometry.cpp.obj
[253/267] Building CXX object python\CMakeFiles\gtsam_py.dir\linear.cpp.obj
[254/267] Building CXX object python\CMakeFiles\gtsam_py.dir\nonlinear.cpp.obj
[255/267] Building CXX object python\CMakeFiles\gtsam_py.dir\custom.cpp.obj
[256/267] Building CXX object python\CMakeFiles\gtsam_py.dir\symbolic.cpp.obj
[257/267] Building CXX object python\CMakeFiles\gtsam_py.dir\sam.cpp.obj
[258/267] Building CXX object python\CMakeFiles\gtsam_py.dir\slam.cpp.obj
[259/267] Building CXX object python\CMakeFiles\gtsam_py.dir\sfm.cpp.obj
[260/267] Building CXX object python\CMakeFiles\gtsam_py.dir\navigation.cpp.obj
[261/267] Building CXX object python\CMakeFiles\gtsam_py.dir\basis.cpp.obj
[262/267] Building CXX object python\CMakeFiles\gtsam_py.dir\hybrid.cpp.obj
[263/267] Linking CXX shared module python\gtsam\gtsam.cp311-win_amd64.pyd
FAILED: python/gtsam/gtsam.cp311-win_amd64.pyd
cmd.exe /C "cd . && %BUILD_PREFIX%\Library\bin\cmake.exe -E vs_link_dll --intdir=python\CMakeFiles\gtsam_py.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\mt.exe --manifests  -- C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1429~1.301\bin\HostX64\x64\link.exe /nologo python\CMakeFiles\gtsam_py.dir\gtsam.cpp.obj python\CMakeFiles\gtsam_py.dir\base.cpp.obj python\CMakeFiles\gtsam_py.dir\inference.cpp.obj python\CMakeFiles\gtsam_py.dir\discrete.cpp.obj python\CMakeFiles\gtsam_py.dir\geometry.cpp.obj python\CMakeFiles\gtsam_py.dir\linear.cpp.obj python\CMakeFiles\gtsam_py.dir\nonlinear.cpp.obj python\CMakeFiles\gtsam_py.dir\custom.cpp.obj python\CMakeFiles\gtsam_py.dir\symbolic.cpp.obj python\CMakeFiles\gtsam_py.dir\sam.cpp.obj python\CMakeFiles\gtsam_py.dir\slam.cpp.obj python\CMakeFiles\gtsam_py.dir\sfm.cpp.obj python\CMakeFiles\gtsam_py.dir\navigation.cpp.obj python\CMakeFiles\gtsam_py.dir\basis.cpp.obj python\CMakeFiles\gtsam_py.dir\hybrid.cpp.obj  /out:python\gtsam\gtsam.cp311-win_amd64.pyd /implib:lib\python_gtsam.lib /pdb:python\gtsam\gtsam.pdb /dll /version:0.0 /FORCE:MULTIPLE /INCREMENTAL:NO  -LTCG  lib\gtsam.lib  %PREFIX%\libs\python311.lib  %PREFIX%\Library\lib\boost_serialization.lib  %PREFIX%\Library\lib\boost_system.lib  %PREFIX%\Library\lib\boost_filesystem.lib  %PREFIX%\Library\lib\boost_atomic.lib  %PREFIX%\Library\lib\boost_thread.lib  -lpthreads  %PREFIX%\Library\lib\boost_date_time.lib  %PREFIX%\Library\lib\boost_regex.lib  %PREFIX%\Library\lib\boost_timer.lib  %PREFIX%\Library\lib\boost_chrono.lib  tbb.lib  tbbmalloc.lib  %PREFIX%\Library\lib\metis.lib  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib  && cd ."
LINK: command "C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1429~1.301\bin\HostX64\x64\link.exe /nologo python\CMakeFiles\gtsam_py.dir\gtsam.cpp.obj python\CMakeFiles\gtsam_py.dir\base.cpp.obj python\CMakeFiles\gtsam_py.dir\inference.cpp.obj python\CMakeFiles\gtsam_py.dir\discrete.cpp.obj python\CMakeFiles\gtsam_py.dir\geometry.cpp.obj python\CMakeFiles\gtsam_py.dir\linear.cpp.obj python\CMakeFiles\gtsam_py.dir\nonlinear.cpp.obj python\CMakeFiles\gtsam_py.dir\custom.cpp.obj python\CMakeFiles\gtsam_py.dir\symbolic.cpp.obj python\CMakeFiles\gtsam_py.dir\sam.cpp.obj python\CMakeFiles\gtsam_py.dir\slam.cpp.obj python\CMakeFiles\gtsam_py.dir\sfm.cpp.obj python\CMakeFiles\gtsam_py.dir\navigation.cpp.obj python\CMakeFiles\gtsam_py.dir\basis.cpp.obj python\CMakeFiles\gtsam_py.dir\hybrid.cpp.obj /out:python\gtsam\gtsam.cp311-win_amd64.pyd /implib:lib\python_gtsam.lib /pdb:python\gtsam\gtsam.pdb /dll /version:0.0 /FORCE:MULTIPLE /INCREMENTAL:NO -LTCG lib\gtsam.lib %PREFIX%\libs\python311.lib %PREFIX%\Library\lib\boost_serialization.lib %PREFIX%\Library\lib\boost_system.lib %PREFIX%\Library\lib\boost_filesystem.lib %PREFIX%\Library\lib\boost_atomic.lib %PREFIX%\Library\lib\boost_thread.lib -lpthreads %PREFIX%\Library\lib\boost_date_time.lib %PREFIX%\Library\lib\boost_regex.lib %PREFIX%\Library\lib\boost_timer.lib %PREFIX%\Library\lib\boost_chrono.lib tbb.lib tbbmalloc.lib %PREFIX%\Library\lib\metis.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST:EMBED,ID=2" failed (exit code 1120) with the following output:
LINK : warning LNK4044: unrecognized option '/lpthreads'; ignored
   Creating library lib\python_gtsam.lib and object lib\python_gtsam.exp
gtsam.cpp.obj : error LNK2001: unresolved external symbol "public: __cdecl gtsam::RedirectCout::~RedirectCout(void)" (??1RedirectCout@gtsam@@QEAA@XZ)
gtsam.cpp.obj : error LNK2001: unresolved external symbol "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl gtsam::RedirectCout::str(void)const " (?str@RedirectCout@gtsam@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
discrete.cpp.obj : error LNK2001: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl gtsam::html(class gtsam::DiscreteValues const &,class std::function<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl(unsigned __int64)> const &,class std::map<unsigned __int64,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,struct std::less<unsigned __int64>,class std::allocator<struct std::pair<unsigned __int64 const ,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > > > const &)" (?html@gtsam@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBVDiscreteValues@1@AEBV?$function@$$A6A?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z@3@AEBV?$map@_KV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@U?$less@_K@2@V?$allocator@U?$pair@$$CB_KV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@@std@@@2@@3@@Z)
discrete.cpp.obj : error LNK2001: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl gtsam::markdown(class gtsam::DiscreteValues const &,class std::function<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl(unsigned __int64)> const &,class std::map<unsigned __int64,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,struct std::less<unsigned __int64>,class std::allocator<struct std::pair<unsigned __int64 const ,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > > > const &)" (?markdown@gtsam@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBVDiscreteValues@1@AEBV?$function@$$A6A?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z@3@AEBV?$map@_KV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@U?$less@_K@2@V?$allocator@U?$pair@$$CB_KV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@@std@@@2@@3@@Z)
custom.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl gtsam::CustomFactor::print(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::function<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl(unsigned __int64)> const &)const " (?print@CustomFactor@gtsam@@UEBAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV?$function@$$A6A?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_K@Z@4@@Z)
custom.cpp.obj : error LNK2001: unresolved external symbol "public: virtual class Eigen::Matrix<double,-1,1,0,-1,1> __cdecl gtsam::CustomFactor::unwhitenedError(class gtsam::Values const &,class boost::optional<class std::vector<class Eigen::Matrix<double,-1,-1,0,-1,-1>,class std::allocator<class Eigen::Matrix<double,-1,-1,0,-1,-1> > > &>)const " (?unwhitenedError@CustomFactor@gtsam@@UEBA?AV?$Matrix@N$0?0$00$0A@$0?0$00@Eigen@@AEBVValues@2@V?$optional@AEAV?$vector@V?$Matrix@N$0?0$0?0$0A@$0?0$0?0@Eigen@@V?$allocator@V?$Matrix@N$0?0$0?0$0A@$0?0$0?0@Eigen@@@std@@@std@@@boost@@@Z)
sfm.cpp.obj : error LNK2001: unresolved external symbol "class std::vector<struct gtsam::SfmTrack2d,class std::allocator<struct gtsam::SfmTrack2d> > __cdecl gtsam::gtsfm::tracksFromPairwiseMatches(class std::map<class gtsam::IndexPair,class Eigen::Matrix<int,-1,2,0,-1,2>,struct std::less<class gtsam::IndexPair>,class std::allocator<struct std::pair<class gtsam::IndexPair const ,class Eigen::Matrix<int,-1,2,0,-1,2> > > > const &,class std::vector<struct gtsam::gtsfm::Keypoints,class std::allocator<struct gtsam::gtsfm::Keypoints> > const &,bool)" (?tracksFromPairwiseMatches@gtsfm@gtsam@@YA?AV?$vector@USfmTrack2d@gtsam@@V?$allocator@USfmTrack2d@gtsam@@@std@@@std@@AEBV?$map@VIndexPair@gtsam@@V?$Matrix@H$0?0$01$0A@$0?0$01@Eigen@@U?$less@VIndexPair@gtsam@@@std@@V?$allocator@U?$pair@$$CBVIndexPair@gtsam@@V?$Matrix@H$0?0$01$0A@$0?0$01@Eigen@@@std@@@6@@4@AEBV?$vector@UKeypoints@gtsfm@gtsam@@V?$allocator@UKeypoints@gtsfm@gtsam@@@std@@@4@_N@Z)
sfm.cpp.obj : error LNK2001: unresolved external symbol "public: class gtsam::Values __cdecl gtsam::TranslationRecovery::run(class std::vector<class gtsam::BinaryMeasurement<class gtsam::Unit3>,class std::allocator<class gtsam::BinaryMeasurement<class gtsam::Unit3> > > const &,double,class std::vector<class gtsam::BinaryMeasurement<class Eigen::Matrix<double,3,1,0,3,1> >,class std::allocator<class gtsam::BinaryMeasurement<class Eigen::Matrix<double,3,1,0,3,1> > > > const &,class gtsam::Values const &)const " (?run@TranslationRecovery@gtsam@@QEBA?AVValues@2@AEBV?$vector@V?$BinaryMeasurement@VUnit3@gtsam@@@gtsam@@V?$allocator@V?$BinaryMeasurement@VUnit3@gtsam@@@gtsam@@@std@@@std@@NAEBV?$vector@V?$BinaryMeasurement@V?$Matrix@N$02$00$0A@$02$00@Eigen@@@gtsam@@V?$allocator@V?$BinaryMeasurement@V?$Matrix@N$02$00$0A@$02$00@Eigen@@@gtsam@@@std@@@5@AEBV32@@Z)
sfm.cpp.obj : error LNK2001: unresolved external symbol "public: void __cdecl gtsam::TranslationRecovery::addPrior(class std::vector<class gtsam::BinaryMeasurement<class gtsam::Unit3>,class std::allocator<class gtsam::BinaryMeasurement<class gtsam::Unit3> > > const &,double,class std::vector<class gtsam::BinaryMeasurement<class Eigen::Matrix<double,3,1,0,3,1> >,class std::allocator<class gtsam::BinaryMeasurement<class Eigen::Matrix<double,3,1,0,3,1> > > > const &,class gtsam::NonlinearFactorGraph *,class boost::shared_ptr<class gtsam::noiseModel::Base> const &)const " (?addPrior@TranslationRecovery@gtsam@@QEBAXAEBV?$vector@V?$BinaryMeasurement@VUnit3@gtsam@@@gtsam@@V?$allocator@V?$BinaryMeasurement@VUnit3@gtsam@@@gtsam@@@std@@@std@@NAEBV?$vector@V?$BinaryMeasurement@V?$Matrix@N$02$00$0A@$02$00@Eigen@@@gtsam@@V?$allocator@V?$BinaryMeasurement@V?$Matrix@N$02$00$0A@$02$00@Eigen@@@gtsam@@@std@@@4@PEAVNonlinearFactorGraph@2@AEBV?$shared_ptr@VBase@noiseModel@gtsam@@@boost@@@Z)
sfm.cpp.obj : error LNK2001: unresolved external symbol "public: class gtsam::NonlinearFactorGraph __cdecl gtsam::TranslationRecovery::buildGraph(class std::vector<class gtsam::BinaryMeasurement<class gtsam::Unit3>,class std::allocator<class gtsam::BinaryMeasurement<class gtsam::Unit3> > > const &)const " (?buildGraph@TranslationRecovery@gtsam@@QEBA?AVNonlinearFactorGraph@2@AEBV?$vector@V?$BinaryMeasurement@VUnit3@gtsam@@@gtsam@@V?$allocator@V?$BinaryMeasurement@VUnit3@gtsam@@@gtsam@@@std@@@std@@@Z)
python\gtsam\gtsam.cp311-win_amd64.pyd : fatal error LNK1120: 10 unresolved externals

ninja: build stopped: subcommand failed.
Traceback (most recent call last):
  File "C:\Users\luser\miniforge3\envs\build\Scripts\conda-mambabuild-script.py", line 9, in <module>
    sys.exit(main())
             ^^^^^^
  File "C:\Users\luser\miniforge3\envs\build\Lib\site-packages\boa\cli\mambabuild.py", line 256, in main
    call_conda_build(action, config)
  File "C:\Users\luser\miniforge3\envs\build\Lib\site-packages\boa\cli\mambabuild.py", line 228, in call_conda_build
    result = api.build(
             ^^^^^^^^^^
  File "C:\Users\luser\miniforge3\envs\build\Lib\site-packages\conda_build\api.py", line 253, in build
    return build_tree(
           ^^^^^^^^^^^
  File "C:\Users\luser\miniforge3\envs\build\Lib\site-packages\conda_build\build.py", line 3799, in build_tree
    packages_from_this = build(
                         ^^^^^^
  File "C:\Users\luser\miniforge3\envs\build\Lib\site-packages\conda_build\build.py", line 2624, in build
    windows.build(
  File "C:\Users\luser\miniforge3\envs\build\Lib\site-packages\conda_build\windows.py", line 341, in build
    check_call_env(
  File "C:\Users\luser\miniforge3\envs\build\Lib\site-packages\conda_build\utils.py", line 450, in check_call_env
    return _func_defaulting_env_to_os_environ("call", *popenargs, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\luser\miniforge3\envs\build\Lib\site-packages\conda_build\utils.py", line 426, in _func_defaulting_env_to_os_environ
    raise subprocess.CalledProcessError(proc.returncode, _args)
subprocess.CalledProcessError: Command '['cmd.exe', '/d', '/c', 'conda_build.bat']' returned non-zero exit status 1.

@traversaro
Copy link
Contributor

Probably a missing GTSAM_EXPORT (see https://github.com/borglab/gtsam/blob/develop/Using-GTSAM-EXPORT.md) in:

and other classes or functions for which a linker error is printed. Some of those are missing in 4.2.0 and presented in the latest devel (see borglab/gtsam#1630), while some of them are also missing in devel. We could fix this by adding a patch to the recipe.

@sadsimulation
Copy link
Contributor Author

Probably a missing GTSAM_EXPORT (see https://github.com/borglab/gtsam/blob/develop/Using-GTSAM-EXPORT.md) in:

* https://github.com/borglab/gtsam/blob/4.2.0/gtsam/base/utilities.h#L14

* https://github.com/borglab/gtsam/blob/4.2.0/gtsam/sfm/TranslationRecovery.h#L51

and other classes or functions for which a linker error is printed. Some of those are missing in 4.2.0 and presented in the latest devel (see borglab/gtsam#1630), while some of them are also missing in devel. We could fix this by adding a patch to the recipe.

I've started looking into this, just to clarify, the GTSAM_EXPORT macro goes in the header file that declares the class or function, but only if the function is also defined in a .cpp source file, correct?

Is there a way to cache the build output or at least the environment? As this turns out to be an iterative process I spent a lot of time recompiling the same files over and over.

@sadsimulation
Copy link
Contributor Author

With the latest patch fix-gtsam-export-4.2.0.patch I've managed to resolve most of the link errors above, the only thing I can't figure out is

LINK : warning LNK4044: unrecognized option '/lpthreads'; ignored
   Creating library lib\python_gtsam.lib and object lib\python_gtsam.exp
gtsam.cpp.obj : error LNK2001: unresolved external symbol "public: __cdecl gtsam::RedirectCout::~RedirectCout(void)" (??1RedirectCout@gtsam@@QEAA@XZ)
gtsam.cpp.obj : error LNK2001: unresolved external symbol "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl gtsam::RedirectCout::str(void)const " (?str@RedirectCout@gtsam@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)

python\gtsam\gtsam.cp311-win_amd64.pyd : fatal error LNK1120: 2 unresolved externals

Which as previously stated should be fixed by adding GTSAM_EXPORT to https://github.com/borglab/gtsam/blob/4.2.0/gtsam/base/utilities.h#L14, however when I add that I end up with a compiler error about undefined gtsam::GTSAM_EXPORT.

@traversaro I'm not too familiar with C++ and the gtsam codebase, do you know how to fix this?

@Tobias-Fischer
Copy link
Contributor

Just add an include should fix this :)

#include <gtsam/dllexport.h>

@conda-forge-webservices
Copy link

Hi! This is the friendly automated conda-forge-linting service.

I was trying to look for recipes to lint for you, but it appears we have a merge conflict.
Please try to merge or rebase with the base branch to resolve this conflict.

Please ping the 'conda-forge/core' team (using the @ notation in a comment) if you believe this is a bug.

@conda-forge-webservices
Copy link

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@Tobias-Fischer
Copy link
Contributor

@conda-forge-admin please rerender

@Tobias-Fischer
Copy link
Contributor

New error when trying vs2022:


        ]
%SRC_DIR%\gtsam/slam/SmartFactorBase.h(207): note: see reference to class template instantiation 'gtsam::CameraSet<CAMERA>' being compiled
        with
        [
            CAMERA=gtsam::StereoCamera
        ]
%SRC_DIR%\gtsam_unstable/slam/SmartStereoProjectionFactor.h(53): note: see reference to class template instantiation 'gtsam::SmartFactorBase<gtsam::StereoCamera>' being compiled
%SRC_DIR%\gtsam/geometry/CameraSet.h(359): error C2668: 'gtsam::CameraSet<CAMERA>::SchurComplement': ambiguous call to overloaded function
        with
        [
            CAMERA=gtsam::StereoCamera
        ]
%SRC_DIR%\gtsam/geometry/CameraSet.h(307): note: could be 'gtsam::SymmetricBlockMatrix gtsam::CameraSet<CAMERA>::SchurComplement<3>(const std::vector<Eigen::Matrix<double,3,6,0,3,6>,Eigen::aligned_allocator<Eigen::Matrix<double,3,6,0,3,6>>> &,const gtsam::Matrix &,const Eigen::Matrix<double,3,3,0,3,3> &,const gtsam::Vector &)'
        with
        [
            CAMERA=gtsam::StereoCamera
        ]
%SRC_DIR%\gtsam/geometry/CameraSet.h(150): note: or       'gtsam::SymmetricBlockMatrix gtsam::CameraSet<CAMERA>::SchurComplement<3,6>(const std::vector<Eigen::Matrix<double,3,6,0,3,6>,Eigen::aligned_allocator<Eigen::Matrix<double,3,6,0,3,6>>> &,const gtsam::Matrix &,const Eigen::Matrix<double,3,3,0,3,3> &,const gtsam::Vector &)'
        with
        [
            CAMERA=gtsam::StereoCamera
        ]
%SRC_DIR%\gtsam/geometry/CameraSet.h(359): note: while trying to match the argument list '(const std::vector<Eigen::Matrix<double,3,6,0,3,6>,Eigen::aligned_allocator<Eigen::Matrix<double,3,6,0,3,6>>>, const gtsam::Matrix, gtsam::Matrix3, const gtsam::Vector)'

Any ideas @traversaro?

@sadsimulation
Copy link
Contributor Author

sadsimulation commented Oct 28, 2023

New error when trying vs2022:

Has been reported in borglab/gtsam#1642.

With the patches added in 872a724 the build successfully completes with VS2019.

Total time: 0:30:44.4
CPU usage: sys=0:05:28.2, user=1:00:21.6
Maximum memory usage observed: 6.4G
Total disk usage observed (not including envs): 2.2G

Any plans to bump the CI pipelines available memory to > 6.4G?

@Tobias-Fischer
Copy link
Contributor

@conda-forge-admin please rerender

conda-forge-webservices[bot] and others added 2 commits October 28, 2023 10:37
@Tobias-Fischer
Copy link
Contributor

@conda-forge-admin please rerender

@traversaro
Copy link
Contributor

Sorry, I was away from keyboard! Anyhow, the SET_PAGEFILE trick worked, cool!

@Tobias-Fischer
Copy link
Contributor

Tobias-Fischer commented Oct 29, 2023

That’s an interesting one:

import: 'gtsam'
Traceback (most recent call last):
  File "D:\bld\gtsam_1698531346074\test_tmp\run_test.py", line 2, in <module>
    import gtsam
  File "D:\bld\gtsam_1698531346074\_test_env\lib\site-packages\gtsam\__init__.py", line 7, in <module>
    from gtsam import gtsam, utils
ImportError: cannot import name 'gtsam' from partially initialized module 'gtsam' (most likely due to a circular import) (D:\bld\gtsam_1698531346074\_test_env\lib\site-packages\gtsam\__init__.py)

@Tobias-Fischer
Copy link
Contributor

I think it's because these pyd files aren't being installed:

2023-10-29T01:32:25.1488245Z [263/267] Linking CXX shared module python\gtsam\gtsam.cp310-win_amd64.pyd
...
2023-10-29T01:32:25.1498135Z [266/267] Linking CXX shared module python\gtsam_unstable\gtsam_unstable.cp310-win_amd64.pyd

@Tobias-Fischer
Copy link
Contributor

This is ready for review @traversaro

@traversaro
Copy link
Contributor

Thanks for the work!

@Tobias-Fischer
Copy link
Contributor

Thanks @sadsimulation

@Tobias-Fischer Tobias-Fischer merged commit ed37c7c into conda-forge:main Oct 29, 2023
24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants