質問

C ++を使用してLinuxおよびWindows用のコードを作成できるソリューションを探しています。

WindowsではVisual Studioを使用します(Windowsで他のものを試しましたが、 DirectX そして、私が知る限り、それが最良のソリューションです。)

Linuxでは、 NetBeans を使用しています(非常に気に入っています)。

私の問題は、プロジェクトをVisual StudioやNetBeansから独立させることです。

しばらくの間、 CMake が解決策だと思っていましたが、学習プロセスもあまりに重要なのは、CMakeですべてのトリックを学ぶよりも、コーディングに時間を費やすことです。そこで、 Boost.Jam に決めました。 Linuxでは正常に機能しましたが、Visual Studioには不向きでした。

Windows上で小さなHello Worldプログラムを作成しました。 Visual Studio Makefileプロジェクトを作成し、それが正しくコンパイルおよびリンクされている間に。実行可能ファイルを実行することはできますが、Visual Studioから実行することはできません。VisualStudioは実行可能ファイルを見つけられません(何をしても)。デバッグもできません。また、コンパイルエラーメッセージを取得しても表示されません。 Visual Studioで確認できるのは、メイクファイルアクションが進行中であり、(プログラムが作成されて正常に実行されている場合でも)ミスがあることです。

私はしばらくBoost.Jamのドキュメントを閲覧してきましたが、それに直面してみましょう、それはかなり貧弱です(多くの人がそれを聞いたのも不思議ではありません)または私は仕事に適していない(愚かな笑を意味する)しかし、なぜそれを聞いた人はほとんどいませんでしたか。)

3つの質問があります:

Visual StudioでBoost.Jamを使用するプロジェクトを誰かが聞いたかどうか知りたいのですが?はいの場合、私はそれを見ることができますか?

実際のVisual Studio統合を備えたツールはありますか?

CMakeの使用を(正しく)学ぶのに多くの時間がかかると考える人は何人いますか?スピードアップするコツはありますか?

役に立ちましたか?

解決

CMakeを学習し、学習プロセスを高速化するために時間をかける必要があります。購入/読み取り " CMake 4th Editionのマスタリング"

問題がある場合は、CMake メーリングリストを使用してください。アクティブ(2009年8月に最大600件のメッセージがありました)

他のヒント

QtとQt Creatorは、問題の良い解決策のように見えます。 qmakeはvcprojファイルとネイティブLinux makefileを生成できます。

Windowsおよびlinux用のC ++でコーディングする場合は、linux用にコーディングし、最小限のcygwinセットアップでアプリケーションをバンドルします。

正しいドキュメントを見ているのですか? 「Boost.Jam」と言ったので、間違ったものを見ている可能性が高いです。 Boost.Buildドキュメント

をご覧ください。

Visual Studio内で多くの人がBoost.Buildを問題なく使用したことは確かです。コマンドラインでプログラムを実行してみてください。おそらく、Visual Studioが表示しないことを決定したエラーメッセージが表示されますか?

CMakeもお勧めします。最初は少し怖いですが、徐々に慣れていきます。初心者がクロスプラットフォームスクリプトを作成するのは、エキスパートがやるほどきれいでも最適でもない場合でも、まだかなり簡単です。 CppUnit(ユニットテスト用)およびHudson(ビルドmgt)との統合により、継続的インテグレーションフレームワークをすぐに設定できました。

NetBeansについてあまり知りませんが、WindowsとLinuxの両方で開発し、WindowsでVisual Studioを使用したい場合は、 CMakeが唯一の正気な選択です。数年使用してきましたが、メイクファイルとプロジェクトファイルの保守にどれだけ時間が節約されたか推測できません。

ベンへの投票。コモディティハードウェアアクセス用に古いUnixコードのWindows移植を行った大手ベンダーがあり、まさにそれが彼らのやったことです。

Emacsは、GNU makeと同様に、両方のプラットフォームで正常に動作します。 GUIが必要な場合は、CygnusとXポートではなく、 MinGW / msys でGTK +を使用します。

数か月前にFosdemでCMakeのデモを見たことがありますが、かなり印象的でした。学習に費やす時間は価値があると思います。

一方で、プラットフォームごとに個別のプロジェクトファイルを維持することは、物事を行うのに完全に受け入れられる方法であるというのが私の個人的な経験です。

クロスコンパイルにCMakeを使用することに関する重要なことは、ツールチェーン情報を書くことだけです:CMakeは残りを把握します。詳細については、 http://www.cmake.org/Wiki/CMake_Cross_Compiling#The_toolchain_file をご覧ください。情報。

どの程度複雑になるかわかりません。Linuxではmingw-4.4.2 + cmakeを使用してWindows用のQt4アプリをコンパイルし、ワインではNSISを使用してセットアップファイルを作成します。 基本的に、-DWin32 = 1を渡すときにmingwを使用するためにCMakeLists.txtをハッキングしました。 関連部分は次のとおりです。

if(WIN32) 
    SET(CMAKE_BUILD_TYPE "Release") #force release for win32, no motive to debug on win32

    SET(CMAKE_CXX_FLAGS_RELEASE  "-march=pentium4 -mtune=pentium4 -mwindows -DNDEBUG -mno-align-stringops -minline-stringops-dynamically -fno-ident -freorder-blocks-and-partition -finline-limit=700 -mfpmath=sse  -ftree-loop-distribution -floop-block -floop-interchange -floop-strip-mine -findirect-inlining -ftree-switch-conversion ${BASE_CXX_FLAGS}")

    SET(WIN32_BASE /home/win32-devel)
    SET(QT_LIB ${WIN32_BASE}/qt-win-opensource-src-4.5.3/lib/)

    SET(CMAKE_CXX_COMPILER i686-pc-mingw32-g++)
    SET(CMAKE_AR i686-pc-mingw32-ar)
    SET(CMAKE_RANLIB  i686-pc-mingw32-ranlib)
    SET(CMAKE_LINKER i686-pc-mingw32-ld)

    ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/app_icon.o
                        COMMAND i686-pc-mingw32-windres
                            -I${CMAKE_CURRENT_SOURCE_DIR}
                            -o${CMAKE_CURRENT_BINARY_DIR}/app_icon.o
                            -i${CMAKE_CURRENT_SOURCE_DIR}/icons/win32_icon.rc
                        )

    SET(OPENSSL_LIBRARIES  ${WIN32_BASE}/openssl-0.9.8l/libeay32.dll;${WIN32_BASE}/openssl-0.9.8l/libssl32.dll)
    SET(QT_LIBRARIES  ${QT_LIB}QtCore4.dll;${QT_LIB}/QtGui4.dll)
    SET(CMAKE_EXECUTABLE_SUFFIX ".exe")

    include_directories(${CMAKE_CURRENT_BINARY_DIR} ${QT_LIB}../include ${WIN32_BASE}/openssl-0.9.8l/include)
    message("Building For   : Win32")
else()
    include_directories(${CMAKE_CURRENT_BINARY_DIR} ${QT_INCLUDES} ${OPENSSL_INCLUDE_DIR})
    message("Building For   : Linux")
endif()
SET(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "-Wl,--no-undefined -static-libgcc -Wl,-O1 -Wl,--as-needed -Wl,--sort-common -s")

編集: 実際の開発はKDevelop 4を使用して行われることを忘れていました。

MPC 、" Makefile、Project、およびWorkspace Creator"は別のツールですそれはあなたの役に立つかもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top