#Global definitions. F_ROOT=$(readlink -f "$0") D_ROOT=$(dirname "${F_ROOT}")/../../. D_COMPILE=${D_ROOT}/compile D_LINK=${D_ROOT}/link D_PACK=${D_ROOT}/pack D_RUN=${D_ROOT}/run F_COMPILE_LIST=${D_PACK}/cpp_files.txt F_LINK_LIST=${D_LINK}/object_files.txt F_OBJ_LIST=${D_PACK}/obj_files.txt echo "" > ${F_LINK_LIST} # Compile. LINE=0 LINE_COUNT=$(cat ${F_COMPILE_LIST} | wc -l) while true do if [ ${LINE} -ge ${LINE_COUNT} ]; then break fi LINE=$((LINE+1)) F_COMPILE=$(head -n ${LINE} ${F_COMPILE_LIST} | tail -n 1) I_COMPILE=${D_COMPILE}/${F_COMPILE} O_COMPILE=${D_LINK}/${F_COMPILE}.o mkdir -p "${O_COMPILE%/*}" clang++ -I ${D_COMPILE} \ -D ROOT_DIRECTORY_MV=\"${D_ROOT}\" \ -c ${I_COMPILE} -o ${O_COMPILE} echo ${O_COMPILE} >> ${F_LINK_LIST} done # Libraries. F_LIBRARY_LIST=${D_PACK}/libraries.txt F_LIBRARY_OPTIONS=${D_LINK}/library_options.txt echo "" > ${F_LIBRARY_OPTIONS} LINE=0 LINE_COUNT=$(cat ${F_LIBRARY_LIST} | wc -l) while true do if [ ${LINE} -ge ${LINE_COUNT} ]; then break fi LINE=$((LINE+1)) LIBRARY="-l$(head -n ${LINE} ${F_LIBRARY_LIST} | tail -n 1)" echo $LIBRARY >> ${F_LIBRARY_OPTIONS} done # Link. I_LINK=$(cat ${F_LINK_LIST}) I_LIBRARIES=$(cat ${F_LIBRARY_OPTIONS}) O_LINK=${D_RUN}/executable clang++ ${I_LIBRARIES} ${I_LINK} -o ${O_LINK}