본관은 낙안(樂安). 1360년(공민왕 9) 문과에 급제한 뒤 성균직강(成均直講)이 되었다. 1366년(공민왕 15) 간관(諫官) 정공권(鄭公權)이 신돈(辛旽)의 죄를 극력 간했던 사건에 연루되어 유배되었으나, 곧 복직되어 비서감승(秘書監丞)의 직에 올랐다.
우왕 때 사헌집의(司憲執義) · 지신사(知申事) · 밀직제학(密直提學) · 정당문학(政堂文學) 등을 역임하였다. 1377년(우왕 3) 9월에 명나라에 사신으로 갔다. 1379년에 양광도(楊廣道)에 왜구가 침입하자 원수 도흥(都興)과 더불어 이를 막았다.
1386년 9월에 동지밀직사사 이숭인(李崇仁)과 더불어 중국 난징[南京]에 사신으로 가서 신정(新正)을 하례하였다. 또, 1388년 5월 양광도 지역에 왜구가 침입해 유린하니 원수 도흥, 조준(趙浚) 등과 더불어 이를 막았다.
1389년(공양왕 1)에는 도평의사사 신청사(新廳舍)의 건축공사를 감독하였다. 1391년 8월에는 문하평리 겸 대사헌(門下評理兼大司憲)이 되어 상소를 올려 5도(五道)의 정부(丁夫)를 뽑아 도성을 수축할 것을 건의하였으며, 축성공사가 시작되자 삼사좌사(三司左使)가 되었다.
그러나 같은 해 10월에 공사가 너무 크다 하여 축성이 중지되었다. 그리고 규정(糾正) 박자량, 집의(執義) 우홍득, 사복부정(司僕副正) 변벌개(邊伐介), 한양부윤 유원정(柳爰廷) 등을 탄핵하기도 하였다. 1392년 3월에 문하찬성사(門下贊成事)로 사헌부의 탄핵을 받아 유배되었다.
1393년(태조 2) 2월에 예문춘추관대학사(藝文春秋館大學士)가 되었고, 상의문하부사(商議門下府事)로서 계룡산 아래 신도(新都) 후보지로서의 적합성 여부를 조사하던 중, 조운(漕運)과 도로 관계를 조사하는 데 참여하였다.
태조가 개성에 돌아간 뒤에도 그곳에 남아 신도경영을 감독하였다. 또, 한양천도 때 좌복야(左僕射)로서 신도궁궐조성도감(新都宮闕造成都監)의 판사가 되어, 청성백(靑城伯) 심덕부(沈德符) 등과 더불어 새 도읍지 건설공사를 급속히 추진하기도 하였다.
1394년 9월 9일에는 참찬문하부사(參贊門下府事)로서 종묘 · 사직 · 궁궐 · 관아 · 시전(市廛) · 도로의 기지를 선정, 구획하고, 심덕부와 더불어 현지에 남아 모든 건설사업을 감독, 시행하였다.
1398년(태조 7) 9월 제1차 왕자의 난에 관련되어 김사행(金師行)이 참수당할 때, 그와 더불어 백성을 혹사하였다 하여 영주(寧州)로 유배되었으나 성곽 경영의 공로로 감형되었다.
시호는 공간(恭簡)이다.