2011-01-25 11 views
4

私は、Kakeを使用するKDevelopを使用して、C言語のプログラム(両方とも私が知らない言語)用にC++ - Qt-GUIを作成することに決めました。別のCMakeプロジェクトをライブラリとして取り込みます

Cソースにはヘッダーがありません。そのため、1つ作成し、いくつかの構造体をマイグレーションしました。また、Cソース内の唯一の関数の宣言も呼び出す必要があります。

CMakeがCファイル(とその定義)を見つけられないか、またはCMakeLists.txtのソースセットにCソースを追加すると問題が発生し、 main.cppファイルとCソースファイルの両方に主な機能があると戸惑っています。

私はヘッダーで宣言したCファイルの関数のみを使うべきだとCMakeに伝えるにはどうすればよいですか?ここ

が、それは次のとおりです。

project(oregengui) 
cmake_minimum_required(VERSION 2.6) 
find_package(Qt4 REQUIRED) 

include_directories(${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}) 

set(oregengui_SRCS oregengui.cpp main.cpp qrangeslider/qrangeslider.cpp) 
#as soon as i add oregengui/oregengui.c, it won’t work because of the main function 
qt4_automoc(${oregengui_SRCS}) 
add_executable(oregengui ${oregengui_SRCS}) 
target_link_libraries(oregengui ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY}) 

PS:それは独立したプロジェクトであるので、私は、あまりにも多くのCソースを変更する必要はありません。私は、開発者がヘッダーの導入を受け入れるだろうと思うが、それほど多くはない。

+0

私たちはそれに取り組むことができるように 'CMakeLists.txt'を貼り付けることができますか? – tibur

+0

OKです。 –

答えて

1

私はこの上のビットさびたんだけど、あなたはの線に沿って何か行うことができます:

:あなたは両方たいあなたCMakeListsでoregengui.c

#if !defined MYGUIPROJ 
int main() { 
... 
} 
#endif 

add_definitions(-DMYGUIPROJ) 

コンパイラは次に、2番目のmain関数を無視します。

+0

Maciekさんとあなたの答えが解決策でした! –

0

プログラムには同時に2つの主要機能を含めることはできません。あなたのプロジェクトに含まれているCファイルのmain関数の名前を変更しようとしてください。これはソースの大きな変更ではありませんが、ローカルで行う必要があります。

+0

しかし、Cプロジェクトはメイン関数を持たないため、実行可能ファイルにコンパイルされません。 –

+0

実行ファイルの一部としてCファイルを追加し、そのmain関数の名前をdummy_mainに変更するだけです。メインから、またはあなたのQtからその機能を使用することができます。 – tibur

+0

私は知っていますが、スタンドアロンとしてもプロジェクトの一部としても、何も変更することなくコンパイルするように、Cファイルをリファクタリングするだけです。 –

0

Cプログラムにmain関数がある場合、それは独立して実行できます。だから、QProcess::execute()メソッドを使ってqtからアプリケーションを呼び出し、出力を取得するのはなぜですか?

+1

私は出力を使用していません。一方、Cヘッダーの構造体が必要なので、それほどエレガントではありません。関数を使用すると、それほど遠くないと思いました。 –

2

Cファイルをライブラリとしてコンパイルし、実行可能ファイルにリンクしてみてください。

add_library(clib oregengui/oregengui.c) 
[...] 
add_executable(oregengui ${oregengui_SRCS}) 
target_link_libraries(oregengui ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} clib) 
+0

これは実際には良いと思います。私はそれを試してみます。 –

関連する問題