这重的也太猛了……重了五个,如果说解决问题是开锁,这个锁眼都快堵死了
这是长期乱套导致的,越往后越纠缠不清。这问题太细致,一个操作都能写出来几个分叉,操作多了就说不全了。
好习惯建议:
https://cfd-china.com/topic/3190/分享一个在任意文件夹中编译库或求解器的办法
这个里面我也跟了个帖子,是写在.bashrc里的,现在又改良了,就是下面这个代码,单独成一个文件,在openfoam里的etc/bashrc里加载。可以把代码和算例分开放,备份方便(被屏蔽的前三行)。还增加了openfoam里没有的快捷命令,可以把用户的东西(代码、二进制、算例)与自带的完全分开。
#\$export FOAM_INST_DIR=\$HOME/.local/share/\$WM_PROJECT
#export WM_PROJECT_USER_DIR=\$HOME/Documents/openfoam/\$USER-\$WM_PROJECT_VERSION
#export WM_PROJECT_USER_CODE_DIR=\$HOME/Documents/code/C/openfoam/\$USER-\$WM_PROJECT_VERSION
#-------------------------------------------------------------------------------
export FOAM_USER_SRC=\$WM_PROJECT_USER_CODE_DIR/src;
#-------------------------------------------------------------------------------
export FOAM_USER_APP=\$WM_PROJECT_USER_CODE_DIR/applications;
export FOAM_USER_SOLVERS=\$WM_PROJECT_USER_CODE_DIR/applications/solvers;
export FOAM_USER_UTILITIES=\$WM_PROJECT_USER_CODE_DIR/applications/utilities;
#-------------------------------------------------------------------------------
export FOAM_USER_TUTORIALS=\$WM_PROJECT_USER_DIR/run/tutorials
alias msrc='cd \$FOAM_USER_SRC'
#-------------------------------------------------------------------------------
alias mapp='cd \$FOAM_USER_APP'
alias msol='cd \$FOAM_USER_SOLVERS'
alias mutil='cd \$FOAM_USER_UTILITIES'
#-------------------------------------------------------------------------------
alias mtut='cd \$FOAM_USER_TUTORIALS'
alias mappb='cd \$FOAM_USER_APPBIN'
alias mlibb='cd \$FOAM_USER_LIBBIN'
加载上面的代码的位置放在下面这个地方,我是连安装位置一起修改了,所以看起来比较乱(只看第三行,前两行是另一个修改,可以定位)。上面的代码我放在my_enviroment文件夹里,每个版本都有各自的,大体相同,不同处可以分开修改
-export WM_PROJECT_USER_DIR=\$HOME/\$WM_PROJECT/\$USER-\$WM_PROJECT_VERSION
+export WM_PROJECT_USER_DIR=\$HOME/.local/share/\$WM_PROJECT/\$USER-\$WM_PROJECT_VERSION
+source \$FOAM_INST_DIR/my_environment/\$USER-$WM_PROJECT_VERSION
openfoam自带的快捷命令在etc/config.sh/alisas,自定义的环境变量在etc/config.sh/setting。但是并不是每个环境变量都有带user版本的,快捷命令更没有。
最好是不要有重名的库,不重名,其实放不放user都行,但是分开放更好。无论是备份自己的工作还是不弄乱原有的代码。
还有一个好处就是,解决这种重复。即使库名字不冲突,但库内容冲突。比如不同的库中重复定义了同一个类。这时候把编译时要链接的库地址删了带冲突库的路径,这样就不冲突,甚至会缺。缺的单独拉到user里就行。