getcwd()現在の作業ディレクトリを取得するために使用しているビルド システム ツールがあります。これは素晴らしいことですが、パスにスペースが含まれている場合があり、これはビルド システムではサポートされていません。シンボリックリンクを作成するだけでよいと思うでしょう:
ln -s "Directory With Spaces" DirectoryWithoutSpaces
そして幸せになってください。しかし、残念ながら、getcwd()すべてのシンボリック リンクを解決します。を使用しようとしましgetenv("PWD")たが、 から戻るのと同じパスを指していませんgetcwd()。環境変数を更新しなかったことのせいmake -Cだと思います。現在、getcwd()次のようなパスが返されます。
/Users/carl/Directory With Spaces/Some/Other/Directories
そしてgetenv("PWD")私に与えます:
/Users/carl/DirectoryWithoutSpaces
それでgetcwd()、シンボリックリンクを解決しないような関数はありますか?
編集:
私が変更され
make -C Some/Other/Directories
に
cd Some/Other/Directories ; make
そして、getenv("PWD")動作します..他に解決策がない場合は、それを使用できます。