オープンソース

オープンソース 近年では、コンパイレーションまで面倒を見てくれる、オープンソースがあるかどうかと言う話になります。 また、ソフトウェアのベースを知る人は、APIの解説ぐらいで、作成するという話でもありますので、有効かどうかという内容になります。

表1.ソフトウェアインフォメーション:

1:ソフトウェア

 Audacity® is a free, open source (cross-platform) digital audio editor, recorder, and mixer. It is a sophisticated software application that comes with an extensive list of features.

 

2:ダウンロード先:https://www.fosshub.com/Audacity.html

Linux Source: -> audacity-minsrc-2.4.2.tar.xz

3:コンパイレーション

unzip *.tar.xz  
: https://linuxize.com/post/how-to-extract-unzip-tar-xz-file/
: https://www.howtogeek.com/409742/how-to-extract-files-from-a-.tar.gz-or-.tar.bz2-file-on-linux/

*.tar.xzですが、
tar xvf *.tar.xzで解凍できます。
zオプションは使えませんでした。
コンプレスの値が大分向上しているようです。
tgzよりいいぐらいです。
wxWidgetsの他に、C言語のgtk+もあるようです。
https://lefestyle101.blogspot.com/2020/08/instructions-for-building-on-linux.html

 

4:利用例

5:ソースコード概要

6:ソースコードのアナライザ

7:カスタマイズ:(例:画面を1つ足す。)

8:カスタマイズ:ダウンロード

 

9: コンパイレーションについて: 雑記

---
ソースファイルですから、コマンドオプションを直接叩いて、コンパイルできるはずです。
gcc: error trying to exec 'cc1plus': execvp: そのようなファイルやディレクトリはありません

---
つまり、本来は、gccという実行ファイルが、cc1plusというファイルを外部コールで実行することになっていますが、Linuxのコマンド類の整合性がとれていないために、この様になっています。今日のパッケージ管理では珍しい現象です。

How to use execvp() : https://stackoverflow.com/questions/27541910/how-to-use-execvp
---

(※真面目に解決します。)

apt-getを用いるように、勧められていますが、yumで設定してみます。
と言っても、wxWidgetにおいては、gccの開発環境が正しくインストールされるぐらいで、大丈夫と思います。
yum install gcc-c++.i686で、C++のコンパイラはインストールされ、C++のコンパイレーション自体は行われます。
"yum search gcc"ぐらいで、適当にサーチすれば、探せます。

---
wxは中身を見れば、ウィンドウツールキットです。

:https://lefestyle101.blogspot.com/2020/08/instructions-for-building-on-linux.html
OnOkというファンクションがよくあります。
最悪、このルーチンにプリントのルーチンをいれて、動作確認できます。
printf("Push OK: AboutDialog.\n");
---
AboutDialog.h:   void OnOK(wxCommandEvent & event);
BatchProcessDialog.h:   void OnOK(wxCommandEvent &event);
LabelDialog.h:   void OnOK(wxCommandEvent &event);
SoundActivatedRecord.h:   void OnOK(wxCommandEvent& event);
SplashDialog.h:   void OnOK(wxCommandEvent & event);
TimerRecordDialog.h:   void OnOK(wxCommandEvent& event);
---
void AboutDialog::OnOK(wxCommandEvent & WXUNUSED(event))
{
#ifdef __WXMAC__
   Destroy();
#else
   EndModal(wxID_OK);
#endif
}
---

cmkeが生成したファイルが、アーカイブに既にあります。
buildというフォルダを背作っる必要があると思われます。
---
cmake_minimum_required( VERSION 3.15 )

# Don't allow in-source builds...no real reason, just
# keeping those source trees nice and tidy.  :-)
# (This can be removed if it becomes an issue.)
if( "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}" )
   message( FATAL_ERROR
      "In-source builds not allowed.\n"
      "Create a new directory and run cmake from there, i.e.:\n"
      "  mkdir build\n"
      "  cd build\n"
      "  cmake ..\n"
      "You will need to delete CMakeCache.txt and CMakeFiles from this directory to clean up."
   )
endif()
---

cmake説明です。
manにクロスプラットフォームのMakefileGeneratorと記載されています。
---
cmake(1)                                                              cmake(1)

NAME
         cmake - Cross-Platform Makefile Generator.

USAGE
         cmake [options] <path-to-source>
         cmake [options] <path-to-existing-build>

DESCRIPTION
       The  "cmake" executable is the CMake command-line interface.  It may be
       used to configure projects in scripts.  Project configuration  settings
       may be specified on the command line with the -D option.  The -i option
       will cause cmake to interactively prompt for such settings.

       CMake is a cross-platform build  system  generator.   Projects  specify
       their  build process with platform-independent CMake listfiles included
       in each directory of a source tree with the name CMakeLists.txt.  Users
       build  a project by using CMake to generate a build system for a native
       tool on their platform.
---
自身のプロジェクトでcmakeしました。
GNUのプロジェクトに反応するようになっているようですが、おそらくソースフォルダの登録が必要と思われます。
mkdir build
cmake ..
CMake Error: The source directory "./src/read_006/src" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
---


10: C++の再設定:
---
yum search cc1plus:
---
# yum search cc1plus
読み込んだプラグイン:fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: mirrors.cat.net
 * centosplus: mirrors.cat.net
 * contrib: mirrors.cat.net
 * epel: d2lzkl7pfhq30w.cloudfront.net
 * extras: mirrors.cat.net
 * remi-safe: mirror.sjc02.svwh.net
 * updates: mirrors.cat.net
警告: 一致するものが見つかりません: cc1plus
見つかりませんでした
---
# yum install gcc-c++.i686
# yum update
読み込んだプラグイン:fastestmirror, refresh-packagekit, security
更新処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: mirrors.cat.net
 * centosplus: mirrors.cat.net
 * contrib: mirrors.cat.net
 * epel: d2lzkl7pfhq30w.cloudfront.net
 * extras: mirrors.cat.net
 * remi-safe: mirror.sjc02.svwh.net
 * updates: mirrors.cat.net
更新と設定されたパッケージがありません。
---
gcc -c ZoomInfo.cpp
ZoomInfo.cpp:11 から include されたファイル中:
Audacity.h:32:6: error: #error Audacity requires at least GCC 4.9
/usr/lib/gcc/i686-redhat-linux/4.4.7/../../../../include/c++/4.4.7/mutex:36 から include されたファイル中,
                 ClientDataHelpers.h:15 から,
                 ClientData.h:14 から,
                 ZoomInfo.h:14 から,
                 ZoomInfo.cpp:12 から:
/usr/lib/gcc/i686-redhat-linux/4.4.7/../../../../include/c++/4.4.7/c++0x_warning.h:31:2: error: #error This file requires compiler and library support for the upcoming ISO C++ standard, C++0x. This support is currently experimental, and must be enabled with the -std=c++0x or -std=gnu++0x compiler options.
AudacityException.h:19 から include されたファイル中,
                 InconsistencyException.h:16 から,
---

cmakeそのものについては、cmake3にて、スクリプトが動作をしたことを確認した。

 

 

 

 

 

コメント