3

Cmakeファイルでflexだけを使用して共有ライブラリを構築しようとすると、何が間違っているのかを理解しようとしています。

私は基本的に以下を持っています

find_package(FLEX)
FLEX_TARGET(Test ../src/test.l ../src/test.c)
set(SRC_FILES mysource.c ${FLEX_Test_OUTPUTS})
add_libary(testlib ${SRC_FILES})
target_link_libraries(testlib crypto c ${FLEX_LIBRARIES})

これにより、../src/test.cが見つからないという問題が発生しています

Lexが最初に実行されたことを確認する方法はありますか? 次に、-L オプションと -d オプションを lex に渡すにはどうすればよいですか (この makefile の通常の pre-cmake バージョンで行っているように)

4

1 に答える 1

4

出力ファイルをソースディレクトリに配置するのはなぜですか?

私は使用することをお勧めし${CMAKE_CURRENT_BINARY_DIR}ます:

FLEX_TARGET(Test ../src/test.l ${CMAKE_CURRENT_BINARY_DIR}/../src/test.c)

はどうかと言うと

Lexが最初に実行されたことを確認する方法はありますか?

あなたはそれをする必要はありません、CMakeはそれ自身によってこの依存関係を推測することができます。問題は、出力ファイルにソースディレクトリを使用しているか、実行../src前にディレクトリが存在しないことにあると思いますflex

次に、-Lおよび-dオプションをlexに渡すにはどうすればよいですか?

出力パラメーターの後にそれらをリストします。

FLEX_TARGET(Test ../src/test.l ${CMAKE_CURRENT_BINARY_DIR}/../src/test.c -L -d)
于 2012-12-18T03:57:03.743 に答える